Skip to content

Commit

Permalink
mac80211: only cancel software-based scans on suspend
Browse files Browse the repository at this point in the history
Otherwise the hardware scan handler could access an invalid scan request
structure.  The driver should cancel any pending hardware scans during
the suspend process anyway, so also add a warning if the hardware scan
is still pending when the device resumes.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
John W. Linville committed Sep 1, 2010
1 parent 18145c6 commit 85f72bc
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
6 changes: 6 additions & 0 deletions net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -1186,6 +1186,12 @@ int __ieee80211_suspend(struct ieee80211_hw *hw);

static inline int __ieee80211_resume(struct ieee80211_hw *hw)
{
struct ieee80211_local *local = hw_to_local(hw);

WARN(test_bit(SCAN_HW_SCANNING, &local->scanning),
"%s: resume with hardware scan still in progress\n",
wiphy_name(hw->wiphy));

return ieee80211_reconfig(hw_to_local(hw));
}
#else
Expand Down
3 changes: 2 additions & 1 deletion net/mac80211/pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ int __ieee80211_suspend(struct ieee80211_hw *hw)
struct ieee80211_sub_if_data *sdata;
struct sta_info *sta;

ieee80211_scan_cancel(local);
if (unlikely(test_bit(SCAN_SW_SCANNING, &local->scanning)))
ieee80211_scan_cancel(local);

ieee80211_stop_queues_by_reason(hw,
IEEE80211_QUEUE_STOP_REASON_SUSPEND);
Expand Down

0 comments on commit 85f72bc

Please sign in to comment.