aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r--net/wireless/scan.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index d4397eba5408..a32d52a04c27 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -161,7 +161,7 @@ static void __cfg80211_bss_expire(struct cfg80211_registered_device *dev,
161 dev->bss_generation++; 161 dev->bss_generation++;
162} 162}
163 163
164void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak) 164void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev)
165{ 165{
166 struct cfg80211_scan_request *request; 166 struct cfg80211_scan_request *request;
167 struct wireless_dev *wdev; 167 struct wireless_dev *wdev;
@@ -210,17 +210,7 @@ void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool leak)
210 dev_put(wdev->netdev); 210 dev_put(wdev->netdev);
211 211
212 rdev->scan_req = NULL; 212 rdev->scan_req = NULL;
213 213 kfree(request);
214 /*
215 * OK. If this is invoked with "leak" then we can't
216 * free this ... but we've cleaned it up anyway. The
217 * driver failed to call the scan_done callback, so
218 * all bets are off, it might still be trying to use
219 * the scan request or not ... if it accesses the dev
220 * in there (it shouldn't anyway) then it may crash.
221 */
222 if (!leak)
223 kfree(request);
224} 214}
225 215
226void __cfg80211_scan_done(struct work_struct *wk) 216void __cfg80211_scan_done(struct work_struct *wk)
@@ -231,7 +221,7 @@ void __cfg80211_scan_done(struct work_struct *wk)
231 scan_done_wk); 221 scan_done_wk);
232 222
233 rtnl_lock(); 223 rtnl_lock();
234 ___cfg80211_scan_done(rdev, false); 224 ___cfg80211_scan_done(rdev);
235 rtnl_unlock(); 225 rtnl_unlock();
236} 226}
237 227