소스 검색

qcacld-3.0: Fix deadlock in driver probe failure

Wlan driver probe callback is called in
CNSS work thread(cnss_driver_event_work in
cnss_powerup).
In case the hdd_wlan_startup failed, and
doing cleanup in hdd_wlan_stop_modules,
the later will call and pending on pld_power_off
to wait for cnss completion. So, deadlock
happended.

Don't need to call power_down because we are in
(driver loading).

Fix by check driver loading state to skip
power_down.

Change-Id: Ib8605d91e01277ccdf4a67e09723c3ee34ceec0d
CRs-Fixed: 2183039
Liangwei Dong 7 년 전
부모
커밋
a78cc1d70b
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      core/hdd/src/wlan_hdd_main.c

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

@@ -10065,7 +10065,8 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode)
 	QDF_STATUS qdf_status;
 	int ret = 0;
 	bool is_recovery_stop = cds_is_driver_recovering();
-	bool is_idle_stop = !cds_is_driver_unloading() && !is_recovery_stop;
+	bool is_idle_stop = !cds_is_driver_unloading() && !is_recovery_stop &&
+		!cds_is_driver_loading();
 	int active_threads;
 	struct target_psoc_info *tgt_hdl;