Message ID | 20191114184334.2866770-1-erhard_f@mailbox.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | 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 (3b4852888d3f7e0cde65b29af9c518f4019e145f) |
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 |
Erhard Furtner <erhard_f@mailbox.org> writes: > 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. It would be good to mention that this was detected with kmemleak. 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> > --- > drivers/of/unittest.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> Because this patch is to drivers/of, you need to send it to the right folks. You can work out who with: $ ./scripts/get_maintainer.pl -f drivers/of/unittest.c robh+dt@kernel.org frowand.list@gmail.com devicetree@vger.kernel.org linux-kernel@vger.kernel.org So to get it merged you should send a v2 (ie. with "PATCH v2" in the subject), and Cc those people above as well as linuxppc-dev. You should include the Fixes and Reviewed-by tags I've posted above in your v2. cheers > 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); > -- > 2.23.0
On 11/14/19 10:43 AM, 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. > > Signed-off-by: Erhard Furtner <erhard_f@mailbox.org> Michael provided instructions about what needs to be done with a v2 spin of your patch to get it upstream. Please feel free to include my reviewed-by as well. Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com> > --- > drivers/of/unittest.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > 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); >
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);
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. Signed-off-by: Erhard Furtner <erhard_f@mailbox.org> --- drivers/of/unittest.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)