qcacld-3.0: Flush psoc idle work during WIFI on/off

Currently in the driver there is a possible race condition between
hdd_open and idle_psoc_timeout wherein stop modules is being done. Both
these operations can potentially occur in parallel.

To synchronize, flush the idle_psoc_work in wlan_hdd_state_ctrl_param_write
which is called during WiFi ON/OFF.

Change-Id: I1d53fa9d53ca31c2c1466f0ee809a07a86a06ee0
CRs-Fixed: 2701512
このコミットが含まれているのは:
Sourav Mohapatra
2020-06-03 11:16:58 +05:30
committed by nshrivas
コミット 6c984e5800

ファイルの表示

@@ -14764,6 +14764,7 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
static const char wlan_on_str[] = "ON";
int ret;
unsigned long rc;
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
if (copy_from_user(buf, user_buf, 3)) {
pr_err("Failed to read buffer\n");
@@ -14794,6 +14795,13 @@ static ssize_t wlan_hdd_state_ctrl_param_write(struct file *filp,
}
}
/*
* Flush idle shutdown work for cases to synchronize the wifi on
* during the idle shutdown.
*/
if (hdd_ctx)
hdd_psoc_idle_timer_stop(hdd_ctx);
exit:
return count;
}