mac80211: release sched_scan_sdata when stopping sched scan
Assuming sched_scan_stop operation is synchronous the driver may not necessary call ieee80211_sched_scan_stopped_work. Since this work is the only place where sched_scan_sdata is released we can possibly run into situation when it is never released. Fix this by releasing it just after calling drv_sched_scan_stop. Signed-off-by: Alexander Bondar <alexander.bondar@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
112c44b2df
commit
71228a1eab
|
@ -1055,9 +1055,11 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata)
|
||||||
/* We don't want to restart sched scan anymore. */
|
/* We don't want to restart sched scan anymore. */
|
||||||
local->sched_scan_req = NULL;
|
local->sched_scan_req = NULL;
|
||||||
|
|
||||||
if (rcu_access_pointer(local->sched_scan_sdata))
|
if (rcu_access_pointer(local->sched_scan_sdata)) {
|
||||||
ret = drv_sched_scan_stop(local, sdata);
|
ret = drv_sched_scan_stop(local, sdata);
|
||||||
|
if (!ret)
|
||||||
|
rcu_assign_pointer(local->sched_scan_sdata, NULL);
|
||||||
|
}
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&local->mtx);
|
mutex_unlock(&local->mtx);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue