The derive_parent() has similar semantics to what we have in newly introduced
of_helpers module. The replacement reduces code base and propagates the actual
error code to the caller.

Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
---
 arch/powerpc/platforms/pseries/dlpar.c | 31 +++++--------------------------
 1 file changed, 5 insertions(+), 26 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/dlpar.c 
b/arch/powerpc/platforms/pseries/dlpar.c
index 47d9cebe..b7f243c 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -18,6 +18,8 @@
 #include <linux/cpu.h>
 #include <linux/slab.h>
 #include <linux/of.h>
+
+#include "of_helpers.h"
 #include "offline_states.h"
 #include "pseries.h"
 
@@ -244,36 +246,13 @@ cc_error:
        return first_dn;
 }
 
-static struct device_node *derive_parent(const char *path)
-{
-       struct device_node *parent;
-       char *last_slash;
-
-       last_slash = strrchr(path, '/');
-       if (last_slash == path) {
-               parent = of_find_node_by_path("/");
-       } else {
-               char *parent_path;
-               int parent_path_len = last_slash - path + 1;
-               parent_path = kmalloc(parent_path_len, GFP_KERNEL);
-               if (!parent_path)
-                       return NULL;
-
-               strlcpy(parent_path, path, parent_path_len);
-               parent = of_find_node_by_path(parent_path);
-               kfree(parent_path);
-       }
-
-       return parent;
-}
-
 int dlpar_attach_node(struct device_node *dn)
 {
        int rc;
 
-       dn->parent = derive_parent(dn->full_name);
-       if (!dn->parent)
-               return -ENOMEM;
+       dn->parent = pseries_of_derive_parent(dn->full_name);
+       if (IS_ERR(dn->parent))
+               return PTR_ERR(dn_parent);
 
        rc = of_attach_node(dn);
        if (rc) {
-- 
2.4.6

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to