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
This commit is contained in:
Liangwei Dong
2018-02-01 02:19:30 -05:00
committed by snandini
parent c4db9f6977
commit a78cc1d70b

View File

@@ -10065,7 +10065,8 @@ int hdd_wlan_stop_modules(struct hdd_context *hdd_ctx, bool ftm_mode)
QDF_STATUS qdf_status; QDF_STATUS qdf_status;
int ret = 0; int ret = 0;
bool is_recovery_stop = cds_is_driver_recovering(); 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; int active_threads;
struct target_psoc_info *tgt_hdl; struct target_psoc_info *tgt_hdl;