Bläddra i källkod

qcacld-3.0: Fix for pre-cac crash in cleanup

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: I24d790f86bf8fb5482fbf56c56d0ce4be50a3aec
CRs-Fixed: 3535131
Vinod Kumar Myadam 1 år sedan
förälder
incheckning
2b5d708b98
1 ändrade filer med 2 tillägg och 1 borttagningar
  1. 2 1
      core/hdd/src/wlan_hdd_pre_cac.c

+ 2 - 1
core/hdd/src/wlan_hdd_pre_cac.c

@@ -424,11 +424,12 @@ static int __wlan_hdd_request_pre_cac(struct hdd_context *hdd_ctx,
 	return 0;
 
 stop_close_pre_cac_adapter:
+	pre_cac_adapter->is_virtual_iface = true;
 	hdd_stop_adapter(hdd_ctx, pre_cac_adapter);
 	qdf_mem_free(pre_cac_ap_ctx->beacon);
 	pre_cac_ap_ctx->beacon = NULL;
 close_pre_cac_adapter:
-	hdd_close_adapter(hdd_ctx, pre_cac_adapter, false);
+	hdd_close_adapter(hdd_ctx, pre_cac_adapter, true);
 release_intf_addr_and_return_failure:
 	/*
 	 * Release the interface address as the adapter