* ARM: Possible memleak during i.MX6ULL probe
@ 2019-05-17 12:42 Stefan Wahren
2019-05-17 13:03 ` Daniel Baluta
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Wahren @ 2019-05-17 12:42 UTC (permalink / raw)
To: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: NXP Linux Team, linux-arm-kernel
Hi,
today i tested current linus-tree ( a6a4b66bd8f ) with our custom
i.MX6ULL board and i noticed a possible memleak:
unreferenced 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
Best regards
Stefan Wahren
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ARM: Possible memleak during i.MX6ULL probe
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
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Baluta @ 2019-05-17 13:03 UTC (permalink / raw)
To: s.hauer, festevam, shawnguo, stefan.wahren, kernel
Cc: dl-linux-imx, linux-arm-kernel
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);
thanks,
Daniel.
On Fri, 2019-05-17 at 14:42 +0200, Stefan Wahren wrote:
> Hi,
>
> today i tested current linus-tree ( a6a4b66bd8f ) with our custom
> i.MX6ULL board and i noticed a possible memleak:
>
> unreferenced 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
>
> Best regards
> Stefan Wahren
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: ARM: Possible memleak during i.MX6ULL probe
2019-05-17 13:03 ` Daniel Baluta
@ 2019-05-17 13:35 ` Stefan Wahren
2019-05-17 14:03 ` Daniel Baluta
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Wahren @ 2019-05-17 13:35 UTC (permalink / raw)
To: Daniel Baluta, s.hauer, festevam, shawnguo, kernel
Cc: dl-linux-imx, linux-arm-kernel
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.
Stefan
>
>
> thanks,
> Daniel.
>
> On Fri, 2019-05-17 at 14:42 +0200, Stefan Wahren wrote:
>> Hi,
>>
>> today i tested current linus-tree ( a6a4b66bd8f ) with our custom
>> i.MX6ULL board and i noticed a possible memleak:
>>
>> unreferenced 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
>>
>> Best regards
>> Stefan Wahren
>>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ARM: Possible memleak during i.MX6ULL probe
2019-05-17 13:35 ` Stefan Wahren
@ 2019-05-17 14:03 ` Daniel Baluta
0 siblings, 0 replies; 4+ messages in thread
From: Daniel Baluta @ 2019-05-17 14:03 UTC (permalink / raw)
To: s.hauer, festevam, shawnguo, stefan.wahren, kernel
Cc: dl-linux-imx, linux-arm-kernel
[-- 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
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-05-17 14:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 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.