Message ID | 20190815062837.6015-1-nishkadg.linux@gmail.com |
---|---|
State | Rejected |
Delegated to: | David Miller |
Headers | show |
Series | net: hns: hns_enet: Add of_node_put in hns_nic_dev_probe() | expand |
On 2019/8/15 14:28, Nishka Dasgupta wrote: > The local variable ae_node in function hns_nic_dev_probe takes the > return value of of_parse_phandle, which gets a node but does not put it. > This may cause a memory leak. Hence put ae_node after the last time it > is invoked. > Issue found with Coccinelle. > > Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com> > --- > drivers/net/ethernet/hisilicon/hns/hns_enet.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > index 2235dd55fab2..b26e84929e1e 100644 > --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c > +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c > @@ -2309,6 +2309,7 @@ static int hns_nic_dev_probe(struct platform_device *pdev) > goto out_read_prop_fail; > } > priv->fwnode = &ae_node->fwnode; > + of_node_put(ae_node); > } else if (is_acpi_node(dev->fwnode)) { > struct fwnode_reference_args args; > > Hi, Nishka: This patch is wrong, we put the node in hns_nic_dev_remove(). The following patch had solved this problem: 263c6d75f9a5 (net: hns: Fix for missing of_node_put() after of_parse_phandle())
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c index 2235dd55fab2..b26e84929e1e 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c @@ -2309,6 +2309,7 @@ static int hns_nic_dev_probe(struct platform_device *pdev) goto out_read_prop_fail; } priv->fwnode = &ae_node->fwnode; + of_node_put(ae_node); } else if (is_acpi_node(dev->fwnode)) { struct fwnode_reference_args args;
The local variable ae_node in function hns_nic_dev_probe takes the return value of of_parse_phandle, which gets a node but does not put it. This may cause a memory leak. Hence put ae_node after the last time it is invoked. Issue found with Coccinelle. Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com> --- drivers/net/ethernet/hisilicon/hns/hns_enet.c | 1 + 1 file changed, 1 insertion(+)