linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V3] net: dsa: Add of_node_put() before break and return statements
@ 2020-08-23 19:30 Sumera Priyadarsini
  2020-08-24 13:20 ` David Miller
  2020-08-24 13:35 ` Vladimir Oltean
  0 siblings, 2 replies; 3+ messages in thread
From: Sumera Priyadarsini @ 2020-08-23 19:30 UTC (permalink / raw)
  To: davem
  Cc: Julia.Lawall, andrew, sean.wang, vivien.didelot, f.fainelli,
	kuba, matthias.bgg, netdev, linux-arm-kernel, linux-mediatek,
	linux-kernel, Sumera Priyadarsini

Every iteration of for_each_child_of_node() decrements
the reference count of the previous node, however when control
is transferred from the middle of the loop, as in the case of
a return or break or goto, there is no decrement thus ultimately
resulting in a memory leak.

Fix a potential memory leak in mt7530.c by inserting of_node_put()
before the break and return statements.

Issue found with Coccinelle.

---
Changes in v2:
	Add another of_node_put() in for_each_child_of_node() as pointed
out by Andrew.

Changes in v3:
	- Correct syntax errors
	- Modify commit message

---

Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>

Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
---
 drivers/net/dsa/mt7530.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 8dcb8a49ab67..4b4701c69fe1 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1326,14 +1326,17 @@ mt7530_setup(struct dsa_switch *ds)
 
 			if (phy_node->parent == priv->dev->of_node->parent) {
 				ret = of_get_phy_mode(mac_np, &interface);
-				if (ret && ret != -ENODEV)
+				if (ret && ret != -ENODEV) {
+					of_node_put(mac_np);
 					return ret;
+				}
 				id = of_mdio_parse_addr(ds->dev, phy_node);
 				if (id == 0)
 					priv->p5_intf_sel = P5_INTF_SEL_PHY_P0;
 				if (id == 4)
 					priv->p5_intf_sel = P5_INTF_SEL_PHY_P4;
 			}
+			of_node_put(mac_np);
 			of_node_put(phy_node);
 			break;
 		}
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH V3] net: dsa: Add of_node_put() before break and return statements
  2020-08-23 19:30 [PATCH V3] net: dsa: Add of_node_put() before break and return statements Sumera Priyadarsini
@ 2020-08-24 13:20 ` David Miller
  2020-08-24 13:35 ` Vladimir Oltean
  1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2020-08-24 13:20 UTC (permalink / raw)
  To: sylphrenadin
  Cc: Julia.Lawall, andrew, sean.wang, vivien.didelot, f.fainelli,
	kuba, matthias.bgg, netdev, linux-arm-kernel, linux-mediatek,
	linux-kernel

From: Sumera Priyadarsini <sylphrenadin@gmail.com>
Date: Mon, 24 Aug 2020 01:00:54 +0530

> ---
> 
> Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
> 
> Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>

You only need one Signed-off-by:

You must not put the signoff after the "---" otherwise GIT will remove
it from the commit log message when I try to apply your patch.

Combine this with the fact that your change didn't even compile
properly up until even V2, I wish you would put more effort and
care into your patch submission.  It feels to reviewers like
you are just throwing this patch onto the mailing list without
much care or testing at all.

Thank you.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH V3] net: dsa: Add of_node_put() before break and return statements
  2020-08-23 19:30 [PATCH V3] net: dsa: Add of_node_put() before break and return statements Sumera Priyadarsini
  2020-08-24 13:20 ` David Miller
@ 2020-08-24 13:35 ` Vladimir Oltean
  1 sibling, 0 replies; 3+ messages in thread
From: Vladimir Oltean @ 2020-08-24 13:35 UTC (permalink / raw)
  To: Sumera Priyadarsini
  Cc: davem, Julia.Lawall, andrew, sean.wang, vivien.didelot,
	f.fainelli, kuba, matthias.bgg, netdev, linux-arm-kernel,
	linux-mediatek, linux-kernel

On Mon, Aug 24, 2020 at 01:00:54AM +0530, Sumera Priyadarsini wrote:
> Every iteration of for_each_child_of_node() decrements
> the reference count of the previous node, however when control
> is transferred from the middle of the loop, as in the case of
> a return or break or goto, there is no decrement thus ultimately
> resulting in a memory leak.
> 
> Fix a potential memory leak in mt7530.c by inserting of_node_put()
> before the break and return statements.
> 
> Issue found with Coccinelle.
> 
> ---
> Changes in v2:
> 	Add another of_node_put() in for_each_child_of_node() as pointed
> out by Andrew.
> 
> Changes in v3:
> 	- Correct syntax errors
> 	- Modify commit message
> 
> ---
> 
> Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
> 
> Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
> ---

If you need to resend anyway, can we please have a proper commit prefix?
A patch on mt7530.c shouldn't be "net: dsa: " but "net: dsa: mt7530: "
as "git log" will tell you. The difference is relevant because "net:
dsa: " typically refers to the generic code in net/dsa/.

>  drivers/net/dsa/mt7530.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> index 8dcb8a49ab67..4b4701c69fe1 100644
> --- a/drivers/net/dsa/mt7530.c
> +++ b/drivers/net/dsa/mt7530.c
> @@ -1326,14 +1326,17 @@ mt7530_setup(struct dsa_switch *ds)
>  
>  			if (phy_node->parent == priv->dev->of_node->parent) {
>  				ret = of_get_phy_mode(mac_np, &interface);
> -				if (ret && ret != -ENODEV)
> +				if (ret && ret != -ENODEV) {
> +					of_node_put(mac_np);
>  					return ret;
> +				}
>  				id = of_mdio_parse_addr(ds->dev, phy_node);
>  				if (id == 0)
>  					priv->p5_intf_sel = P5_INTF_SEL_PHY_P0;
>  				if (id == 4)
>  					priv->p5_intf_sel = P5_INTF_SEL_PHY_P4;
>  			}
> +			of_node_put(mac_np);
>  			of_node_put(phy_node);
>  			break;
>  		}
> -- 
> 2.17.1
> 

Thanks,
-Vladimir

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-08-24 13:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-23 19:30 [PATCH V3] net: dsa: Add of_node_put() before break and return statements Sumera Priyadarsini
2020-08-24 13:20 ` David Miller
2020-08-24 13:35 ` Vladimir Oltean

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).