powerpc/pseries: Failed reconfig notifier chain call cleanup
authorNathan Fontenot <nfont@austin.ibm.com>
Mon, 9 Mar 2009 00:00:00 +0000 (00:00 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 24 Mar 2009 02:43:52 +0000 (13:43 +1100)
The return code from invoking the notifier chain when updating the
ibm,dynamic-memory property is not handled properly. In failure
cases (rc == NOTIFY_BAD) we should be restoring the original value
of the property.  In success (rc == NOTIFY_OK) we should be returning
zero from the calling routine.

Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/reconfig.c

index c591a25b0b0d816d7e3f3c206c205ece673ea871..b6f1b137d427e68de2ea6c4e95dfa63a30e80760 100644 (file)
@@ -468,9 +468,13 @@ static int do_update_property(char *buf, size_t bufsize)
 
                rc = blocking_notifier_call_chain(&pSeries_reconfig_chain,
                                                  action, value);
+               if (rc == NOTIFY_BAD) {
+                       rc = prom_update_property(np, oldprop, newprop);
+                       return -ENOMEM;
+               }
        }
 
-       return rc;
+       return 0;
 }
 
 /**