net: Only call halt on a driver that has been init'ed
authorJoe Hershberger <joe.hershberger@ni.com>
Mon, 2 Jul 2018 19:47:46 +0000 (14:47 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 26 Jul 2018 19:08:17 +0000 (14:08 -0500)
With driver model, we were not checking if the state of the device was
marked as active before calling the halt function. Check that the device
is probed and also marked as active. This avoids the case where we were
calling halt on the first device in net_init() and the driver would
operate on bogus data structures causing problems. In this case, the
priv was all 0, so halt() would close STDIN.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
net/eth-uclass.c

index e4b49229e38d02936f668ed18b2fa53bceee3191..fa3f5497a2902577f2bbb84947d918836b7bcbab 100644 (file)
@@ -307,7 +307,7 @@ void eth_halt(void)
        struct eth_device_priv *priv;
 
        current = eth_get_dev();
-       if (!current || !device_active(current))
+       if (!current || !eth_is_active(current))
                return;
 
        eth_get_ops(current)->stop(current);