[PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix null pointer dereference for ndev

Chintan Vankar posted 1 patch 1 month ago
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix null pointer dereference for ndev
Posted by Chintan Vankar 1 month ago
From: Nishanth Menon <nm@ti.com>

In the TX completion packet stage of TI SoCs with CPSW2G instance, which
has single external ethernet port, ndev is accessed without being
initialized if no TX packets have been processed. It results into null
pointer dereference, causing kernel to crash. Fix this by having a check
on the number of TX packets which have been processed.

Fixes: 9a369ae3d143 ("net: ethernet: ti: am65-cpsw: remove am65_cpsw_nuss_tx_compl_packets_2g()")
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Chintan Vankar <c-vankar@ti.com>
---

Hello All,

This patch is based on the commit '5189446ba995' of
origin/main branch of Linux-net repository.

 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
index ecd6ecac87bb..8b2364f5f731 100644
--- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
+++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
@@ -1522,7 +1522,7 @@ static int am65_cpsw_nuss_tx_compl_packets(struct am65_cpsw_common *common,
 		}
 	}
 
-	if (single_port) {
+	if (single_port && num_tx) {
 		netif_txq = netdev_get_tx_queue(ndev, chn);
 		netdev_tx_completed_queue(netif_txq, num_tx, total_bytes);
 		am65_cpsw_nuss_tx_wake(tx_chn, ndev, netif_txq);
-- 
2.34.1
Re: [PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix null pointer dereference for ndev
Posted by Simon Horman 1 month ago
On Fri, Aug 29, 2025 at 05:40:51PM +0530, Chintan Vankar wrote:
> From: Nishanth Menon <nm@ti.com>
> 
> In the TX completion packet stage of TI SoCs with CPSW2G instance, which
> has single external ethernet port, ndev is accessed without being
> initialized if no TX packets have been processed. It results into null
> pointer dereference, causing kernel to crash. Fix this by having a check
> on the number of TX packets which have been processed.
> 
> Fixes: 9a369ae3d143 ("net: ethernet: ti: am65-cpsw: remove am65_cpsw_nuss_tx_compl_packets_2g()")
> Signed-off-by: Nishanth Menon <nm@ti.com>
> Signed-off-by: Chintan Vankar <c-vankar@ti.com>

Thanks,

I see that prior to the cited commit, the code now
in the condition updated by this patch was executed
in the loop that now precedes the conditional. And in
the flow before the cited patch ndev was always set
in the loop before the code in question runs.

Reviewed-by: Simon Horman <horms@kernel.org>