diff options
author | Ajay Singh | 2019-02-02 20:16:56 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2019-02-04 12:38:40 +0100 |
commit | 06fee3d5b3c3a57ab2bd91b0e032510a1e58c612 (patch) | |
tree | e48155db13ee56796ee1b63f98bc486bb2a6dc3a /drivers/staging/wilc1000/linux_wlan.c | |
parent | staging: wilc1000: avoid the use of 'wilc_wfi_mon' static variable (diff) | |
download | kernel-qcow2-linux-06fee3d5b3c3a57ab2bd91b0e032510a1e58c612.tar.gz kernel-qcow2-linux-06fee3d5b3c3a57ab2bd91b0e032510a1e58c612.tar.xz kernel-qcow2-linux-06fee3d5b3c3a57ab2bd91b0e032510a1e58c612.zip |
staging: wilc1000: remove conditional lock in wilc_wfi_deinit_mon_interface()
wilc_wfi_deinit_mon_interface() calls unregister_netdev() which
requires the rtnl lock again. Now move wilc_wfi_deinit_mon_interface()
out of wilc_mac_close(). Also remove explicit call to wilc_mac_close()
because unregister_netdev() takes care of calling wilc_mac_close().
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/wilc1000/linux_wlan.c')
-rw-r--r-- | drivers/staging/wilc1000/linux_wlan.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c index 1362d8f3cbc9..b0249d264e4b 100644 --- a/drivers/staging/wilc1000/linux_wlan.c +++ b/drivers/staging/wilc1000/linux_wlan.c @@ -920,7 +920,6 @@ static int wilc_mac_close(struct net_device *ndev) netdev_dbg(ndev, "Deinitializing wilc1000\n"); wl->close = 1; wilc_wlan_deinitialize(ndev); - wilc_wfi_deinit_mon_interface(wl); } vif->mac_opened = 0; @@ -1006,19 +1005,15 @@ void wilc_netdev_cleanup(struct wilc *wilc) wilc->firmware = NULL; } - if (wilc->vif[0]->ndev || wilc->vif[1]->ndev) { - for (i = 0; i < WILC_NUM_CONCURRENT_IFC; i++) - if (wilc->vif[i]->ndev) - if (wilc->vif[i]->mac_opened) - wilc_mac_close(wilc->vif[i]->ndev); - - for (i = 0; i < WILC_NUM_CONCURRENT_IFC; i++) { + for (i = 0; i < WILC_NUM_CONCURRENT_IFC; i++) { + if (wilc->vif[i] && wilc->vif[i]->ndev) { unregister_netdev(wilc->vif[i]->ndev); wilc_free_wiphy(wilc->vif[i]->ndev); free_netdev(wilc->vif[i]->ndev); } } + wilc_wfi_deinit_mon_interface(wilc); flush_workqueue(wilc->hif_workqueue); destroy_workqueue(wilc->hif_workqueue); wilc_wlan_cfg_deinit(wilc); |