qcacld-3.0: Fix deadlock for pre CAC adapter unregister
Vendor command pre_doit holds wiphy lock inside kernel and calls into driver vendor command handler and from driver vendor command handler if unregister_netdevice() is called it will try to acquire same wiphy lock inside kernel cfg80211_netdev_notifier_call() and deadlock. To fix this issue from driver vendor command handler for pre CAC adapter stop call cfg80211_unregister_netdevice to avoid recursive wiphy locking. Change-Id: Id939016c1baf730707346f2375d0b952017a48f5 CRs-Fixed: 3493940
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f8ebc95aef
commit
1ff8294469
@@ -127,6 +127,7 @@ void hdd_close_pre_cac_adapter(struct hdd_context *hdd_ctx)
|
|||||||
osif_vdev_sync_wait_for_ops(vdev_sync);
|
osif_vdev_sync_wait_for_ops(vdev_sync);
|
||||||
|
|
||||||
wlan_hdd_release_intf_addr(hdd_ctx, pre_cac_adapter->mac_addr.bytes);
|
wlan_hdd_release_intf_addr(hdd_ctx, pre_cac_adapter->mac_addr.bytes);
|
||||||
|
pre_cac_adapter->is_virtual_iface = true;
|
||||||
hdd_close_adapter(hdd_ctx, pre_cac_adapter, true);
|
hdd_close_adapter(hdd_ctx, pre_cac_adapter, true);
|
||||||
|
|
||||||
osif_vdev_sync_trans_stop(vdev_sync);
|
osif_vdev_sync_trans_stop(vdev_sync);
|
||||||
|
Reference in New Issue
Block a user