drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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
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>
© 2016 - 2025 Red Hat, Inc.