All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Baluta <daniel.baluta@nxp.com>
To: "s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"festevam@gmail.com" <festevam@gmail.com>,
	"shawnguo@kernel.org" <shawnguo@kernel.org>,
	"stefan.wahren@i2se.com" <stefan.wahren@i2se.com>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>
Cc: dl-linux-imx <linux-imx@nxp.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: ARM: Possible memleak during i.MX6ULL probe
Date: Fri, 17 May 2019 14:03:58 +0000	[thread overview]
Message-ID: <02dc0ac5e132b848f5b39f98779f6ac10256a419.camel@nxp.com> (raw)
In-Reply-To: <9ed1247a-99c6-37f9-693a-28a12648bc0d@i2se.com>

[-- Attachment #1: Type: text/plain, Size: 1105 bytes --]

On Fri, 2019-05-17 at 15:35 +0200, Stefan Wahren wrote:
> Hi Daniel,
> 
> On 17.05.19 15:03, Daniel Baluta wrote:
> > Hi Stefan,
> > 
> > Can you try the following patch:
> > 
> > diff --git a/drivers/base/regmap/regmap-debugfs.c
> > b/drivers/base/regmap/regmap-debugfs.c
> > index 263f82516ff4..a2225efffdda 100644
> > --- a/drivers/base/regmap/regmap-debugfs.c
> > +++ b/drivers/base/regmap/regmap-debugfs.c
> > @@ -579,6 +579,9 @@ void regmap_debugfs_init(struct regmap *map,
> > const
> > char *name)
> >         }
> >  
> >         if (!strcmp(name, "dummy")) {
> > +               if (map->debugfs_name)
> > +                       kfree(map->debugfs_name);
> > +
> >                 map->debugfs_name = kasprintf(GFP_KERNEL,
> > "dummy%d",
> >                                                 dummy_index);
> 
> unfortunately this doesn't fix the issue.
> 

That's strange. It could be that we are dealing with multiple memory
leaks.

If you have time I have updated the previous patch with some debugging
info. Please find it attach. Let me know the results.



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-regmap-debugfs-Fix-memory-leak-in-regmap_debugfs_ini.patch --]
[-- Type: text/x-patch; name="0001-regmap-debugfs-Fix-memory-leak-in-regmap_debugfs_ini.patch", Size: 2837 bytes --]

From 5f6f9a051dc0019658bbf6e42517314e8e6c6ddf Mon Sep 17 00:00:00 2001
From: Daniel Baluta <daniel.baluta@nxp.com>
Date: Fri, 17 May 2019 16:07:35 +0300
Subject: [PATCH] regmap: debugfs: Fix memory leak in regmap_debugfs_init
Content-Type: text/plain; charset="iso-8859-1"

As detected by kmemleak running on i.MX6ULL board:

nreferenced object 0xd8366600 (size 64):
  comm "swapper/0", pid 1, jiffies 4294937370 (age 933.220s)
  hex dump (first 32 bytes):
    64 75 6d 6d 79 2d 69 6f 6d 75 78 63 2d 67 70 72  dummy-iomuxc-gpr
    40 32 30 65 34 30 30 30 00 e3 f3 ab fe d1 1b dd  @20e4000........
  backtrace:
    [<b0402aec>] kasprintf+0x2c/0x54
    [<a6fbad2c>] regmap_debugfs_init+0x7c/0x31c
    [<9c8d91fa>] __regmap_init+0xb5c/0xcf4
    [<5b1c3d2a>] of_syscon_register+0x164/0x2c4
    [<596a5d80>] syscon_node_to_regmap+0x64/0x90
    [<49bd597b>] imx6ul_init_machine+0x34/0xa0
    [<250a4dac>] customize_machine+0x1c/0x30
    [<2d19fdaf>] do_one_initcall+0x7c/0x398
    [<e6084469>] kernel_init_freeable+0x328/0x448
    [<168c9101>] kernel_init+0x8/0x114
    [<913268aa>] ret_from_fork+0x14/0x20
    [<ce7b131a>] 0x0

Root cause is that map->debugfs_name is allocated using kasprintf
and then the pointer is lost by assigning it other memory address.

Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
 drivers/base/regmap/regmap-debugfs.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index 263f82516ff4..147b83b58602 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -570,6 +570,10 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
 	if (map->dev)
 		devname = dev_name(map->dev);
 
+	pr_info("debugfs_init1: name %s, debugfs_name %s\n",
+		name ? name : "NULL",
+		debugfs_name ? debugfs_name : "NULL");
+
 	if (name) {
 		map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s",
 					      devname, name);
@@ -578,13 +582,27 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
 		name = devname;
 	}
 
+	pr_info("debugfs_init1: name %s, debugfs_name %s\n",
+		name ? name : "NULL",
+		map->debugfs_name ? map->debugfs_name : "NULL");
+
 	if (!strcmp(name, "dummy")) {
+	
+		pr_info("debugfs_init2: Freeing debufs_name %s\n",
+			map->debugfs_name ? map->debugfs_name : "NULL");
+
+		kfree(map->debugfs_name);
+
 		map->debugfs_name = kasprintf(GFP_KERNEL, "dummy%d",
 						dummy_index);
 		name = map->debugfs_name;
 		dummy_index++;
 	}
 
+	pr_info("debugfs_init2: name %s, debugfs_name %s\n",
+		name ? name : "NULL",
+		map->debugfs_name ? map->debugfs_name : "NULL");
+
 	map->debugfs = debugfs_create_dir(name, regmap_debugfs_root);
 	if (!map->debugfs) {
 		dev_warn(map->dev,
-- 
2.17.1


[-- Attachment #3: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

      reply	other threads:[~2019-05-17 14:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-17 12:42 ARM: Possible memleak during i.MX6ULL probe Stefan Wahren
2019-05-17 13:03 ` Daniel Baluta
2019-05-17 13:35   ` Stefan Wahren
2019-05-17 14:03     ` Daniel Baluta [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=02dc0ac5e132b848f5b39f98779f6ac10256a419.camel@nxp.com \
    --to=daniel.baluta@nxp.com \
    --cc=festevam@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=stefan.wahren@i2se.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.