From f696186203076770f51eb5890712e696e6bb72d7 Mon Sep 17 00:00:00 2001 From: Grygorii Strashko Date: Tue, 31 Jan 2017 14:04:04 -0600 Subject: [PATCH] net: ethernet: ti: cpsw: fix NULL pointer dereference in switch mode In switch mode on struct cpsw_slave->ndev field will be initialized with proper value only for the one cpsw slave port, as result cpsw_get_usage_count() will generate "Unable to handle kernel NULL pointer dereference" exception when first ethernet interface is opening cpsw_ndo_open(). This issue causes boot regression on AM335x EVM and reproducible on am57xx-evm (switch mode). Fix it by adding additional check for !cpsw->slaves[i].ndev in cpsw_get_usage_count(). Cc: Ivan Khoronzhuk Fixes: 03fd01ad0eea ("net: ethernet: ti: cpsw: don't duplicate ndev_running") Signed-off-by: Grygorii Strashko Reviewed-by: Ivan Khoronzhuk Signed-off-by: David S. Miller --- drivers/net/ethernet/ti/cpsw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 67b7323b6907..35a95dcc755b 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -677,7 +677,7 @@ static int cpsw_get_usage_count(struct cpsw_common *cpsw) u32 usage_count = 0; for (i = 0; i < cpsw->data.slaves; i++) - if (netif_running(cpsw->slaves[i].ndev)) + if (cpsw->slaves[i].ndev && netif_running(cpsw->slaves[i].ndev)) usage_count++; return usage_count; -- 2.20.1