diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-07-10 13:39:02 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-12 06:10:49 -0400 |
commit | 8e95ea49c94908cb10e698c5637d57f0fbdc796d (patch) | |
tree | 597f5817baab936980b6d888bfe695e8a40dc747 /net/wireless/chan.c | |
parent | 2a9e6c58871df77b69afffad250062853570ee23 (diff) |
cfg80211: fix locking and lockdep complaints
To call cfg80211_get_chan_state() we need to lock
the wdev, so we need to lock the wdev_iter mutex
in cfg80211_can_use_iftype_chan(). This needs to
use nested locking for lockdep.
Also, cfg80211_get_chan_state() doesn't actually
use the rdev, so remove that completely including
the lock assertion that isn't needed.
Reported-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/chan.c')
-rw-r--r-- | net/wireless/chan.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/wireless/chan.c b/net/wireless/chan.c index 434c56b92c3..1cc4b7cc737 100644 --- a/net/wireless/chan.c +++ b/net/wireless/chan.c | |||
@@ -103,15 +103,13 @@ int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev, | |||
103 | } | 103 | } |
104 | 104 | ||
105 | void | 105 | void |
106 | cfg80211_get_chan_state(struct cfg80211_registered_device *rdev, | 106 | cfg80211_get_chan_state(struct wireless_dev *wdev, |
107 | struct wireless_dev *wdev, | ||
108 | struct ieee80211_channel **chan, | 107 | struct ieee80211_channel **chan, |
109 | enum cfg80211_chan_mode *chanmode) | 108 | enum cfg80211_chan_mode *chanmode) |
110 | { | 109 | { |
111 | *chan = NULL; | 110 | *chan = NULL; |
112 | *chanmode = CHAN_MODE_UNDEFINED; | 111 | *chanmode = CHAN_MODE_UNDEFINED; |
113 | 112 | ||
114 | ASSERT_RDEV_LOCK(rdev); | ||
115 | ASSERT_WDEV_LOCK(wdev); | 113 | ASSERT_WDEV_LOCK(wdev); |
116 | 114 | ||
117 | if (!netif_running(wdev->netdev)) | 115 | if (!netif_running(wdev->netdev)) |