linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/2] net: fixes for fec driver
@ 2021-05-12  2:43 Joakim Zhang
  2021-05-12  2:43 ` [PATCH net 1/2] net: fec: fix the potential memory leak in fec_enet_init() Joakim Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Joakim Zhang @ 2021-05-12  2:43 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel

Two small fixes for fec driver.

Fugang Duan (2):
  net: fec: fix the potential memory leak in fec_enet_init()
  net: fec: add defer probe for of_get_mac_address

 drivers/net/ethernet/freescale/fec_main.c | 24 ++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

-- 
2.17.1


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

* [PATCH net 1/2] net: fec: fix the potential memory leak in fec_enet_init()
  2021-05-12  2:43 [PATCH net 0/2] net: fixes for fec driver Joakim Zhang
@ 2021-05-12  2:43 ` Joakim Zhang
  2021-05-12  2:44 ` [PATCH net 2/2] net: fec: add defer probe for of_get_mac_address Joakim Zhang
  2021-05-12 21:10 ` [PATCH net 0/2] net: fixes for fec driver patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Joakim Zhang @ 2021-05-12  2:43 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel

From: Fugang Duan <fugang.duan@nxp.com>

If the memory allocated for cbd_base is failed, it should
free the memory allocated for the queues, otherwise it causes
memory leak.

And if the memory allocated for the queues is failed, it can
return error directly.

Fixes: 59d0f7465644 ("net: fec: init multi queue date structure")
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 drivers/net/ethernet/freescale/fec_main.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index f2065f9d02e6..a2ada39c22d7 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -3290,7 +3290,9 @@ static int fec_enet_init(struct net_device *ndev)
 		return ret;
 	}
 
-	fec_enet_alloc_queue(ndev);
+	ret = fec_enet_alloc_queue(ndev);
+	if (ret)
+		return ret;
 
 	bd_size = (fep->total_tx_ring_size + fep->total_rx_ring_size) * dsize;
 
@@ -3298,7 +3300,8 @@ static int fec_enet_init(struct net_device *ndev)
 	cbd_base = dmam_alloc_coherent(&fep->pdev->dev, bd_size, &bd_dma,
 				       GFP_KERNEL);
 	if (!cbd_base) {
-		return -ENOMEM;
+		ret = -ENOMEM;
+		goto free_queue_mem;
 	}
 
 	/* Get the Ethernet address */
@@ -3376,6 +3379,10 @@ static int fec_enet_init(struct net_device *ndev)
 		fec_enet_update_ethtool_stats(ndev);
 
 	return 0;
+
+free_queue_mem:
+	fec_enet_free_queue(ndev);
+	return ret;
 }
 
 #ifdef CONFIG_OF
-- 
2.17.1


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

* [PATCH net 2/2] net: fec: add defer probe for of_get_mac_address
  2021-05-12  2:43 [PATCH net 0/2] net: fixes for fec driver Joakim Zhang
  2021-05-12  2:43 ` [PATCH net 1/2] net: fec: fix the potential memory leak in fec_enet_init() Joakim Zhang
@ 2021-05-12  2:44 ` Joakim Zhang
  2021-05-12 21:10 ` [PATCH net 0/2] net: fixes for fec driver patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Joakim Zhang @ 2021-05-12  2:44 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel

From: Fugang Duan <fugang.duan@nxp.com>

If MAC address read from nvmem efuse by calling .of_get_mac_address(),
but nvmem efuse is registered later than the driver, then it
return -EPROBE_DEFER value. So modify the driver to support
defer probe when read MAC address from nvmem efuse.

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 drivers/net/ethernet/freescale/fec_main.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index a2ada39c22d7..ad82cffc6f3f 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1662,7 +1662,7 @@ static int fec_enet_rx_napi(struct napi_struct *napi, int budget)
 }
 
 /* ------------------------------------------------------------------------- */
-static void fec_get_mac(struct net_device *ndev)
+static int fec_get_mac(struct net_device *ndev)
 {
 	struct fec_enet_private *fep = netdev_priv(ndev);
 	unsigned char *iap, tmpaddr[ETH_ALEN];
@@ -1685,6 +1685,8 @@ static void fec_get_mac(struct net_device *ndev)
 			ret = of_get_mac_address(np, tmpaddr);
 			if (!ret)
 				iap = tmpaddr;
+			else if (ret == -EPROBE_DEFER)
+				return ret;
 		}
 	}
 
@@ -1723,7 +1725,7 @@ static void fec_get_mac(struct net_device *ndev)
 		eth_hw_addr_random(ndev);
 		dev_info(&fep->pdev->dev, "Using random MAC address: %pM\n",
 			 ndev->dev_addr);
-		return;
+		return 0;
 	}
 
 	memcpy(ndev->dev_addr, iap, ETH_ALEN);
@@ -1731,6 +1733,8 @@ static void fec_get_mac(struct net_device *ndev)
 	/* Adjust MAC if using macaddr */
 	if (iap == macaddr)
 		 ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->dev_id;
+
+	return 0;
 }
 
 /* ------------------------------------------------------------------------- */
@@ -3305,7 +3309,10 @@ static int fec_enet_init(struct net_device *ndev)
 	}
 
 	/* Get the Ethernet address */
-	fec_get_mac(ndev);
+	ret = fec_get_mac(ndev);
+	if (ret)
+		goto free_queue_mem;
+
 	/* make sure MAC we just acquired is programmed into the hw */
 	fec_set_mac_address(ndev, NULL);
 
-- 
2.17.1


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

* Re: [PATCH net 0/2] net: fixes for fec driver
  2021-05-12  2:43 [PATCH net 0/2] net: fixes for fec driver Joakim Zhang
  2021-05-12  2:43 ` [PATCH net 1/2] net: fec: fix the potential memory leak in fec_enet_init() Joakim Zhang
  2021-05-12  2:44 ` [PATCH net 2/2] net: fec: add defer probe for of_get_mac_address Joakim Zhang
@ 2021-05-12 21:10 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-05-12 21:10 UTC (permalink / raw)
  To: Joakim Zhang; +Cc: davem, kuba, netdev, linux-kernel

Hello:

This series was applied to netdev/net.git (refs/heads/master):

On Wed, 12 May 2021 10:43:58 +0800 you wrote:
> Two small fixes for fec driver.
> 
> Fugang Duan (2):
>   net: fec: fix the potential memory leak in fec_enet_init()
>   net: fec: add defer probe for of_get_mac_address
> 
>  drivers/net/ethernet/freescale/fec_main.c | 24 ++++++++++++++++++-----
>  1 file changed, 19 insertions(+), 5 deletions(-)

Here is the summary with links:
  - [net,1/2] net: fec: fix the potential memory leak in fec_enet_init()
    https://git.kernel.org/netdev/net/c/619fee9eb13b
  - [net,2/2] net: fec: add defer probe for of_get_mac_address
    https://git.kernel.org/netdev/net/c/052fcc453182

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2021-05-12 22:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-12  2:43 [PATCH net 0/2] net: fixes for fec driver Joakim Zhang
2021-05-12  2:43 ` [PATCH net 1/2] net: fec: fix the potential memory leak in fec_enet_init() Joakim Zhang
2021-05-12  2:44 ` [PATCH net 2/2] net: fec: add defer probe for of_get_mac_address Joakim Zhang
2021-05-12 21:10 ` [PATCH net 0/2] net: fixes for fec driver patchwork-bot+netdevbpf

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).