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>
        /* We don't want to restart sched scan anymore. */
        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);
-
+               if (!ret)
+                       rcu_assign_pointer(local->sched_scan_sdata, NULL);
+       }
 out:
        mutex_unlock(&local->mtx);