nl80211: check channel switch validity better

Before allowing userspace to initiate a channel switch, check
that it's actually connected in some sense. Also use a more
appropriate error code for the not connected case.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2014-01-22 10:05:27 +01:00
parent c782bf8caa
commit 1ff79dfa37

View File

@ -5771,10 +5771,15 @@ static int nl80211_channel_switch(struct sk_buff *skb, struct genl_info *info)
/* useless if AP is not running */
if (!wdev->beacon_interval)
return -EINVAL;
return -ENOTCONN;
break;
case NL80211_IFTYPE_ADHOC:
if (!wdev->ssid_len)
return -ENOTCONN;
break;
case NL80211_IFTYPE_MESH_POINT:
if (!wdev->mesh_id_len)
return -ENOTCONN;
break;
default:
return -EOPNOTSUPP;