Message ID | 20191126014804.28267-1-erhard_f@mailbox.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [v2] of: unittest: fix memory leak in attach_node_and_children | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (2ec2260ce7bce5eb6a8ced0bb78d75c1b3eca306) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 11 lines checked |
snowpatch_ozlabs/needsstable | warning | Please consider tagging this patch for stable! |
On Tue, 26 Nov 2019 02:48:04 +0100, Erhard Furtner wrote: > In attach_node_and_children memory is allocated for full_name via > kasprintf. If the condition of the 1st if is not met the function > returns early without freeing the memory. Add a kfree() to fix that. > > This has been detected with kmemleak: > Link: https://bugzilla.kernel.org/show_bug.cgi?id=205327 > > It looks like the leak was introduced by this commit: > Fixes: 5babefb7f7ab ("of: unittest: allow base devicetree to have symbol metadata") > > Signed-off-by: Erhard Furtner <erhard_f@mailbox.org> > Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> > Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com> > --- > Changes in v2: > - Make the commit message more clearer. > > drivers/of/unittest.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > Applied, thanks. Rob
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index 92e895d86458..ca7823eef2b4 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -1146,8 +1146,10 @@ static void attach_node_and_children(struct device_node *np) full_name = kasprintf(GFP_KERNEL, "%pOF", np); if (!strcmp(full_name, "/__local_fixups__") || - !strcmp(full_name, "/__fixups__")) + !strcmp(full_name, "/__fixups__")) { + kfree(full_name); return; + } dup = of_find_node_by_path(full_name); kfree(full_name);