diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-03-19 15:04:07 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-24 11:15:58 +0100 |
commit | f9f475292dbb0e7035fb6661d1524761ea0888d9 (patch) | |
tree | 77f4bf7741deb74108ef033eeb68131069a8e406 /net/wireless/core.h | |
parent | 8b305780ed0c49a49c6bd58a4372fd6b22a5a71e (diff) | |
download | op-kernel-dev-f9f475292dbb0e7035fb6661d1524761ea0888d9.zip op-kernel-dev-f9f475292dbb0e7035fb6661d1524761ea0888d9.tar.gz |
cfg80211: always check for scan end on P2P device
If a P2P device wdev is removed while it has a scan, then the
scan completion might crash later as it is already freed by
that time. To avoid the crash always check the scan completion
when the P2P device is being removed for some reason. If the
driver already canceled it, don't want and free it, otherwise
warn and leak it to avoid later crashes.
In order to do this, locking needs to be changed away from the
rdev mutex (which can't always be guaranteed). For now, use
the sched_scan_mtx instead, I'll rename it to just scan_mtx in
a later patch.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/core.h')
-rw-r--r-- | net/wireless/core.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/wireless/core.h b/net/wireless/core.h index 3aec0e4..5845c2b 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h @@ -503,6 +503,9 @@ int cfg80211_validate_beacon_int(struct cfg80211_registered_device *rdev, void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev, enum nl80211_iftype iftype, int num); +void cfg80211_stop_p2p_device(struct cfg80211_registered_device *rdev, + struct wireless_dev *wdev); + #define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10 #ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS |