Commit aaef66b8 authored by David S. Miller's avatar David S. Miller

Merge tag 'mac80211-for-davem-2015-01-15' of...

Merge tag 'mac80211-for-davem-2015-01-15' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211

Just two fixes - one for an uninialized variable and
one for a deadlock in regulatory processing.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents f7d85556 20658702
...@@ -1643,7 +1643,7 @@ __ieee80211_sta_handle_tspec_ac_params(struct ieee80211_sub_if_data *sdata) ...@@ -1643,7 +1643,7 @@ __ieee80211_sta_handle_tspec_ac_params(struct ieee80211_sub_if_data *sdata)
{ {
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
bool ret; bool ret = false;
int ac; int ac;
if (local->hw.queues < IEEE80211_NUM_ACS) if (local->hw.queues < IEEE80211_NUM_ACS)
......
...@@ -1530,45 +1530,40 @@ static void reg_call_notifier(struct wiphy *wiphy, ...@@ -1530,45 +1530,40 @@ static void reg_call_notifier(struct wiphy *wiphy,
static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev) static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev)
{ {
struct ieee80211_channel *ch;
struct cfg80211_chan_def chandef; struct cfg80211_chan_def chandef;
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy); struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
bool ret = true; enum nl80211_iftype iftype;
wdev_lock(wdev); wdev_lock(wdev);
iftype = wdev->iftype;
/* make sure the interface is active */
if (!wdev->netdev || !netif_running(wdev->netdev)) if (!wdev->netdev || !netif_running(wdev->netdev))
goto out; goto wdev_inactive_unlock;
switch (wdev->iftype) { switch (iftype) {
case NL80211_IFTYPE_AP: case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO: case NL80211_IFTYPE_P2P_GO:
if (!wdev->beacon_interval) if (!wdev->beacon_interval)
goto out; goto wdev_inactive_unlock;
chandef = wdev->chandef;
ret = cfg80211_reg_can_beacon(wiphy,
&wdev->chandef, wdev->iftype);
break; break;
case NL80211_IFTYPE_ADHOC: case NL80211_IFTYPE_ADHOC:
if (!wdev->ssid_len) if (!wdev->ssid_len)
goto out; goto wdev_inactive_unlock;
chandef = wdev->chandef;
ret = cfg80211_reg_can_beacon(wiphy,
&wdev->chandef, wdev->iftype);
break; break;
case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_P2P_CLIENT:
if (!wdev->current_bss || if (!wdev->current_bss ||
!wdev->current_bss->pub.channel) !wdev->current_bss->pub.channel)
goto out; goto wdev_inactive_unlock;
ch = wdev->current_bss->pub.channel; if (!rdev->ops->get_channel ||
if (rdev->ops->get_channel && rdev_get_channel(rdev, wdev, &chandef))
!rdev_get_channel(rdev, wdev, &chandef)) cfg80211_chandef_create(&chandef,
ret = cfg80211_chandef_usable(wiphy, &chandef, wdev->current_bss->pub.channel,
IEEE80211_CHAN_DISABLED); NL80211_CHAN_NO_HT);
else
ret = !(ch->flags & IEEE80211_CHAN_DISABLED);
break; break;
case NL80211_IFTYPE_MONITOR: case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_AP_VLAN: case NL80211_IFTYPE_AP_VLAN:
...@@ -1581,9 +1576,26 @@ static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev) ...@@ -1581,9 +1576,26 @@ static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev)
break; break;
} }
out:
wdev_unlock(wdev); wdev_unlock(wdev);
return ret;
switch (iftype) {
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_P2P_GO:
case NL80211_IFTYPE_ADHOC:
return cfg80211_reg_can_beacon(wiphy, &chandef, iftype);
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_P2P_CLIENT:
return cfg80211_chandef_usable(wiphy, &chandef,
IEEE80211_CHAN_DISABLED);
default:
break;
}
return true;
wdev_inactive_unlock:
wdev_unlock(wdev);
return true;
} }
static void reg_leave_invalid_chans(struct wiphy *wiphy) static void reg_leave_invalid_chans(struct wiphy *wiphy)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment