powerpc/pseries: fix a potential memory leak

In case we have a full node name like /foo/bar and /foo is not found the
parent_path left unfreed. So, free a memory before return to a caller.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Andy Shevchenko 2015-10-01 12:46:07 +03:00 committed by Michael Ellerman
parent 948ad1acaf
commit dc85aaed64
1 changed files with 2 additions and 4 deletions

View File

@ -15,7 +15,7 @@
*/
struct device_node *pseries_of_derive_parent(const char *path)
{
struct device_node *parent = NULL;
struct device_node *parent;
char *parent_path = "/";
size_t parent_path_len = strrchr(path, '/') - path + 1;
@ -30,9 +30,7 @@ struct device_node *pseries_of_derive_parent(const char *path)
strlcpy(parent_path, path, parent_path_len);
}
parent = of_find_node_by_path(parent_path);
if (!parent)
return ERR_PTR(-EINVAL);
if (strcmp(parent_path, "/"))
kfree(parent_path);
return parent;
return parent ? parent : ERR_PTR(-EINVAL);
}