Commit 9a11aff2 authored by Igor Russkikh's avatar Igor Russkikh Committed by David S. Miller

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: default avatarDavid Arcari <darcari@redhat.com>
Fixes: 90869ddf ("net: aquantia: Implement pci shutdown callback")
Signed-off-by: default avatarIgor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cce96d18
...@@ -951,9 +951,11 @@ void aq_nic_shutdown(struct aq_nic_s *self) ...@@ -951,9 +951,11 @@ void aq_nic_shutdown(struct aq_nic_s *self)
netif_device_detach(self->ndev); netif_device_detach(self->ndev);
err = aq_nic_stop(self); if (netif_running(self->ndev)) {
if (err < 0) err = aq_nic_stop(self);
goto err_exit; if (err < 0)
goto err_exit;
}
aq_nic_deinit(self); aq_nic_deinit(self);
err_exit: err_exit:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment