net: aquantia: oops when shutdown on already stopped device
In case netdev is closed at the moment of pci shutdown, aq_nic_stop
gets called second time. napi_disable in that case hangs indefinitely.
In other case, if device was never opened at all, we get oops because
of null pointer access.
We should invoke aq_nic_stop conditionally, only if device is running
at the moment of shutdown.
Reported-by: David Arcari <darcari@redhat.com>
Fixes: 90869ddfef ("net: aquantia: Implement pci shutdown callback")
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
cce96d1883
commit
9a11aff25f
@@ -951,9 +951,11 @@ void aq_nic_shutdown(struct aq_nic_s *self)
|
||||
|
||||
netif_device_detach(self->ndev);
|
||||
|
||||
err = aq_nic_stop(self);
|
||||
if (err < 0)
|
||||
goto err_exit;
|
||||
if (netif_running(self->ndev)) {
|
||||
err = aq_nic_stop(self);
|
||||
if (err < 0)
|
||||
goto err_exit;
|
||||
}
|
||||
aq_nic_deinit(self);
|
||||
|
||||
err_exit:
|
||||
|
||||
Reference in New Issue
Block a user