* [PATCH] pinctrl: core: fix possible memory leak in pinctrl_enable()
@ 2021-10-22 1:43 Yang Yingliang
2021-10-24 23:43 ` Linus Walleij
0 siblings, 1 reply; 2+ messages in thread
From: Yang Yingliang @ 2021-10-22 1:43 UTC (permalink / raw)
To: linux-kernel, linux-gpio; +Cc: linus.walleij
I got memory leak as follows when doing fault injection test:
unreferenced object 0xffff888020a7a680 (size 64):
comm "i2c-mcp23018-41", pid 23090, jiffies 4295160544 (age 8.680s)
hex dump (first 32 bytes):
00 48 d3 1e 80 88 ff ff 00 1a 56 c1 ff ff ff ff .H........V.....
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<0000000083c79b35>] kmem_cache_alloc_trace+0x16d/0x360
[<0000000051803c95>] pinctrl_init_controller+0x6ed/0xb70
[<0000000064346707>] pinctrl_register+0x27/0x80
[<0000000029b0e186>] devm_pinctrl_register+0x5b/0xe0
[<00000000391f5a3e>] mcp23s08_probe_one+0x968/0x118a [pinctrl_mcp23s08]
[<000000006112c039>] mcp230xx_probe+0x266/0x560 [pinctrl_mcp23s08_i2c]
If pinctrl_claim_hogs() fails, the 'pindesc' allocated in pinctrl_register_one_pin()
need be freed.
Reported-by: Hulk Robot <hulkci@huawei.com>
Fixes: 950b0d91dc10 ("pinctrl: core: Fix regression caused by delayed work for hogs")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
drivers/pinctrl/core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 5082102d7d0d..ffe39336fcac 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -2100,6 +2100,8 @@ int pinctrl_enable(struct pinctrl_dev *pctldev)
if (error) {
dev_err(pctldev->dev, "could not claim hogs: %i\n",
error);
+ pinctrl_free_pindescs(pctldev, pctldev->desc->pins,
+ pctldev->desc->npins);
mutex_destroy(&pctldev->mutex);
kfree(pctldev);
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] pinctrl: core: fix possible memory leak in pinctrl_enable()
2021-10-22 1:43 [PATCH] pinctrl: core: fix possible memory leak in pinctrl_enable() Yang Yingliang
@ 2021-10-24 23:43 ` Linus Walleij
0 siblings, 0 replies; 2+ messages in thread
From: Linus Walleij @ 2021-10-24 23:43 UTC (permalink / raw)
To: Yang Yingliang; +Cc: linux-kernel, open list:GPIO SUBSYSTEM
On Fri, Oct 22, 2021 at 3:36 AM Yang Yingliang <yangyingliang@huawei.com> wrote:
> I got memory leak as follows when doing fault injection test:
>
> unreferenced object 0xffff888020a7a680 (size 64):
> comm "i2c-mcp23018-41", pid 23090, jiffies 4295160544 (age 8.680s)
> hex dump (first 32 bytes):
> 00 48 d3 1e 80 88 ff ff 00 1a 56 c1 ff ff ff ff .H........V.....
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
> backtrace:
> [<0000000083c79b35>] kmem_cache_alloc_trace+0x16d/0x360
> [<0000000051803c95>] pinctrl_init_controller+0x6ed/0xb70
> [<0000000064346707>] pinctrl_register+0x27/0x80
> [<0000000029b0e186>] devm_pinctrl_register+0x5b/0xe0
> [<00000000391f5a3e>] mcp23s08_probe_one+0x968/0x118a [pinctrl_mcp23s08]
> [<000000006112c039>] mcp230xx_probe+0x266/0x560 [pinctrl_mcp23s08_i2c]
>
> If pinctrl_claim_hogs() fails, the 'pindesc' allocated in pinctrl_register_one_pin()
> need be freed.
>
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Fixes: 950b0d91dc10 ("pinctrl: core: Fix regression caused by delayed work for hogs")
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Excellent find and fix!
Thanks so much Yang!
Patch applied and tagged for stable.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-10-24 23:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-22 1:43 [PATCH] pinctrl: core: fix possible memory leak in pinctrl_enable() Yang Yingliang
2021-10-24 23:43 ` Linus Walleij
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.