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.li...@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())