Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 315546
b: refs/heads/master
c: 8e95ea4
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg committed Jul 12, 2012
1 parent 46f2ff0 commit 95c8a03
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2a9e6c58871df77b69afffad250062853570ee23
refs/heads/master: 8e95ea49c94908cb10e698c5637d57f0fbdc796d
4 changes: 1 addition & 3 deletions trunk/net/wireless/chan.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,13 @@ int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev,
}

void
cfg80211_get_chan_state(struct cfg80211_registered_device *rdev,
struct wireless_dev *wdev,
cfg80211_get_chan_state(struct wireless_dev *wdev,
struct ieee80211_channel **chan,
enum cfg80211_chan_mode *chanmode)
{
*chan = NULL;
*chanmode = CHAN_MODE_UNDEFINED;

ASSERT_RDEV_LOCK(rdev);
ASSERT_WDEV_LOCK(wdev);

if (!netif_running(wdev->netdev))
Expand Down
3 changes: 1 addition & 2 deletions trunk/net/wireless/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -463,8 +463,7 @@ cfg80211_can_use_chan(struct cfg80211_registered_device *rdev,
}

void
cfg80211_get_chan_state(struct cfg80211_registered_device *rdev,
struct wireless_dev *wdev,
cfg80211_get_chan_state(struct wireless_dev *wdev,
struct ieee80211_channel **chan,
enum cfg80211_chan_mode *chanmode);

Expand Down
11 changes: 10 additions & 1 deletion trunk/net/wireless/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -1059,7 +1059,16 @@ int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev,
if (rdev->wiphy.software_iftypes & BIT(wdev_iter->iftype))
continue;

cfg80211_get_chan_state(rdev, wdev_iter, &ch, &chmode);
/*
* We may be holding the "wdev" mutex, but now need to lock
* wdev_iter. This is OK because once we get here wdev_iter
* is not wdev (tested above), but we need to use the nested
* locking for lockdep.
*/
mutex_lock_nested(&wdev_iter->mtx, 1);
__acquire(wdev_iter->mtx);
cfg80211_get_chan_state(wdev_iter, &ch, &chmode);
wdev_unlock(wdev_iter);

switch (chmode) {
case CHAN_MODE_UNDEFINED:
Expand Down

0 comments on commit 95c8a03

Please sign in to comment.