소스 검색

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 2 년 전
부모
커밋
2b5d708b98
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  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;
 	return 0;
 
 
 stop_close_pre_cac_adapter:
 stop_close_pre_cac_adapter:
+	pre_cac_adapter->is_virtual_iface = true;
 	hdd_stop_adapter(hdd_ctx, pre_cac_adapter);
 	hdd_stop_adapter(hdd_ctx, pre_cac_adapter);
 	qdf_mem_free(pre_cac_ap_ctx->beacon);
 	qdf_mem_free(pre_cac_ap_ctx->beacon);
 	pre_cac_ap_ctx->beacon = NULL;
 	pre_cac_ap_ctx->beacon = NULL;
 close_pre_cac_adapter:
 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_intf_addr_and_return_failure:
 	/*
 	/*
 	 * Release the interface address as the adapter
 	 * Release the interface address as the adapter