.. | .. |
---|
63 | 63 | } |
---|
64 | 64 | EXPORT_SYMBOL_GPL(of_reconfig_notifier_unregister); |
---|
65 | 65 | |
---|
66 | | -#ifdef DEBUG |
---|
67 | | -const char *action_names[] = { |
---|
| 66 | +static const char *action_names[] = { |
---|
| 67 | + [0] = "INVALID", |
---|
68 | 68 | [OF_RECONFIG_ATTACH_NODE] = "ATTACH_NODE", |
---|
69 | 69 | [OF_RECONFIG_DETACH_NODE] = "DETACH_NODE", |
---|
70 | 70 | [OF_RECONFIG_ADD_PROPERTY] = "ADD_PROPERTY", |
---|
71 | 71 | [OF_RECONFIG_REMOVE_PROPERTY] = "REMOVE_PROPERTY", |
---|
72 | 72 | [OF_RECONFIG_UPDATE_PROPERTY] = "UPDATE_PROPERTY", |
---|
73 | 73 | }; |
---|
74 | | -#endif |
---|
75 | 74 | |
---|
76 | 75 | int of_reconfig_notify(unsigned long action, struct of_reconfig_data *p) |
---|
77 | 76 | { |
---|
.. | .. |
---|
590 | 589 | } |
---|
591 | 590 | |
---|
592 | 591 | ret = __of_add_property(ce->np, ce->prop); |
---|
593 | | - if (ret) { |
---|
594 | | - pr_err("changeset: add_property failed @%pOF/%s\n", |
---|
595 | | - ce->np, |
---|
596 | | - ce->prop->name); |
---|
597 | | - break; |
---|
598 | | - } |
---|
599 | 592 | break; |
---|
600 | 593 | case OF_RECONFIG_REMOVE_PROPERTY: |
---|
601 | 594 | ret = __of_remove_property(ce->np, ce->prop); |
---|
602 | | - if (ret) { |
---|
603 | | - pr_err("changeset: remove_property failed @%pOF/%s\n", |
---|
604 | | - ce->np, |
---|
605 | | - ce->prop->name); |
---|
606 | | - break; |
---|
607 | | - } |
---|
608 | 595 | break; |
---|
609 | 596 | |
---|
610 | 597 | case OF_RECONFIG_UPDATE_PROPERTY: |
---|
.. | .. |
---|
618 | 605 | } |
---|
619 | 606 | |
---|
620 | 607 | ret = __of_update_property(ce->np, ce->prop, &old_prop); |
---|
621 | | - if (ret) { |
---|
622 | | - pr_err("changeset: update_property failed @%pOF/%s\n", |
---|
623 | | - ce->np, |
---|
624 | | - ce->prop->name); |
---|
625 | | - break; |
---|
626 | | - } |
---|
627 | 608 | break; |
---|
628 | 609 | default: |
---|
629 | 610 | ret = -EINVAL; |
---|
630 | 611 | } |
---|
631 | 612 | raw_spin_unlock_irqrestore(&devtree_lock, flags); |
---|
632 | 613 | |
---|
633 | | - if (ret) |
---|
| 614 | + if (ret) { |
---|
| 615 | + pr_err("changeset: apply failed: %-15s %pOF:%s\n", |
---|
| 616 | + action_names[ce->action], ce->np, ce->prop->name); |
---|
634 | 617 | return ret; |
---|
| 618 | + } |
---|
635 | 619 | |
---|
636 | 620 | switch (ce->action) { |
---|
637 | 621 | case OF_RECONFIG_ATTACH_NODE: |
---|
.. | .. |
---|
910 | 894 | { |
---|
911 | 895 | struct of_changeset_entry *ce; |
---|
912 | 896 | |
---|
| 897 | + if (WARN_ON(action >= ARRAY_SIZE(action_names))) |
---|
| 898 | + return -EINVAL; |
---|
| 899 | + |
---|
913 | 900 | ce = kzalloc(sizeof(*ce), GFP_KERNEL); |
---|
914 | 901 | if (!ce) |
---|
915 | 902 | return -ENOMEM; |
---|