[U-Boot] [PATCH] net: eth-uclass: call stop only for active devices

Keerthy j-keerthy at ti.com
Wed Feb 20 12:32:46 UTC 2019


Currently stop is being called unconditionally without even
checking if start is called. In case of multiple instances eth
being present many devices might just be initialized without
a start call in such cases stop might lead unpredictable behaviors
including aborts and crashes. Hence add a check before calling stop.

Signed-off-by: Keerthy <j-keerthy at ti.com>
---
 net/eth-uclass.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 2ef20df192..26f7e0b8cd 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -531,7 +531,8 @@ static int eth_pre_remove(struct udevice *dev)
 {
 	struct eth_pdata *pdata = dev->platdata;
 
-	eth_get_ops(dev)->stop(dev);
+	if (eth_is_active(dev))
+		eth_get_ops(dev)->stop(dev);
 
 	/* clear the MAC address */
 	memset(pdata->enetaddr, 0, ARP_HLEN);
-- 
2.17.1



More information about the U-Boot mailing list