aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2009-03-20 21:21:18 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-03-27 20:13:05 -0400
commit35a8efe1a67ba5d7bb7492f67f52ed2aa4925892 (patch)
tree7783b27bebbc3f113a15ba0b884c24fb627c37a2 /net/wireless/nl80211.c
parentnl80211: Add more through validation of MLME command parameters (diff)
downloadlinux-dev-35a8efe1a67ba5d7bb7492f67f52ed2aa4925892.tar.xz
linux-dev-35a8efe1a67ba5d7bb7492f67f52ed2aa4925892.zip
nl80211: Check that netif_runnin is true in cfg80211 code
We do not want to require all the drivers using cfg80211 to need to do this or to be prepared to handle these commands when the interface is down. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to '')
-rw-r--r--net/wireless/nl80211.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 6f38ee7a3c92..6bb73a3a3391 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1556,6 +1556,11 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
err = drv->ops->add_station(&drv->wiphy, dev, mac_addr, &params);
out:
@@ -1808,6 +1813,11 @@ static int nl80211_set_mpath(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
err = drv->ops->change_mpath(&drv->wiphy, dev, dst, next_hop);
out:
@@ -1846,6 +1856,11 @@ static int nl80211_new_mpath(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
err = drv->ops->add_mpath(&drv->wiphy, dev, dst, next_hop);
out:
@@ -2380,6 +2395,11 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
if (drv->scan_req) {
err = -EBUSY;
goto out;
@@ -2641,6 +2661,11 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
if (!info->attrs[NL80211_ATTR_MAC]) {
err = -EINVAL;
goto out;
@@ -2709,6 +2734,11 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
if (!info->attrs[NL80211_ATTR_MAC] ||
!info->attrs[NL80211_ATTR_SSID]) {
err = -EINVAL;
@@ -2767,6 +2797,11 @@ static int nl80211_deauthenticate(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
if (!info->attrs[NL80211_ATTR_MAC]) {
err = -EINVAL;
goto out;
@@ -2821,6 +2856,11 @@ static int nl80211_disassociate(struct sk_buff *skb, struct genl_info *info)
goto out;
}
+ if (!netif_running(dev)) {
+ err = -ENETDOWN;
+ goto out;
+ }
+
if (!info->attrs[NL80211_ATTR_MAC]) {
err = -EINVAL;
goto out;