Message ID | 20190804160200.5139-1-nishkadg.linux@gmail.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 3d2557ab75d4c568c79eefa2e550e0d80348a6bd |
Headers | show |
Series | pinctrl: samsung: exynos: Add of_node_put() before return | expand |
On Sun, Aug 04, 2019 at 09:32:00PM +0530, Nishka Dasgupta wrote: > Each iteration of for_each_child_of_node puts the previous node, but in > the case of a return from the middle of the loop, there is no put, thus > causing a memory leak. Hence add an of_node_put before the return. > Issue found with Coccinelle. > > Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com> > --- > drivers/pinctrl/samsung/pinctrl-exynos.c | 4 +++- Thanks, applied. Best regards, Krzysztof
On Mon, Aug 05, 2019 at 06:21:54PM +0200, Krzysztof Kozlowski wrote: > On Sun, Aug 04, 2019 at 09:32:00PM +0530, Nishka Dasgupta wrote: > > Each iteration of for_each_child_of_node puts the previous node, but in > > the case of a return from the middle of the loop, there is no put, thus > > causing a memory leak. Hence add an of_node_put before the return. > > Issue found with Coccinelle. > > > > Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com> > > --- > > drivers/pinctrl/samsung/pinctrl-exynos.c | 4 +++- > > Thanks, applied. > Hi Nishka, I am sorry but I missed the v5.4 merge window and did not push this to Linus. It's my fault. I'll push it this time, for v5.5 (no need for action from your side). Best regards, Krzysztof
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c index ebc27b06718c..e7f4cbad2c92 100644 --- a/drivers/pinctrl/samsung/pinctrl-exynos.c +++ b/drivers/pinctrl/samsung/pinctrl-exynos.c @@ -486,8 +486,10 @@ int exynos_eint_wkup_init(struct samsung_pinctrl_drv_data *d) if (match) { irq_chip = kmemdup(match->data, sizeof(*irq_chip), GFP_KERNEL); - if (!irq_chip) + if (!irq_chip) { + of_node_put(np); return -ENOMEM; + } wkup_np = np; break; }
Each iteration of for_each_child_of_node puts the previous node, but in the case of a return from the middle of the loop, there is no put, thus causing a memory leak. Hence add an of_node_put before the return. Issue found with Coccinelle. Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com> --- drivers/pinctrl/samsung/pinctrl-exynos.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)