aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-06-15 08:23:16 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-06-20 04:57:03 -0400
commit2bd7e35da011f51d4fdb3b71f888c3a50194bfcd (patch)
tree5c21d882b27059aef8db432bb92c83c02c23113e /net/wireless
parent878d9ec7367816dc336b0c24e6256596559692b7 (diff)
nl80211: use __cfg80211_rdev_from_attrs for testmode
To fix the testmode cross-namespace access problem, use __cfg80211_rdev_from_attrs() to get the device instead of open-coding similar functionality. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/nl80211.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 7e94d4d960bf..06623d064606 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5230,21 +5230,18 @@ static int nl80211_testmode_dump(struct sk_buff *skb,
5230 nl80211_policy); 5230 nl80211_policy);
5231 if (err) 5231 if (err)
5232 return err; 5232 return err;
5233 if (nl80211_fam.attrbuf[NL80211_ATTR_WIPHY]) {
5234 phy_idx = nla_get_u32(
5235 nl80211_fam.attrbuf[NL80211_ATTR_WIPHY]);
5236 } else {
5237 struct net_device *netdev;
5238 5233
5239 err = get_rdev_dev_by_ifindex(sock_net(skb->sk), 5234 mutex_lock(&cfg80211_mutex);
5240 nl80211_fam.attrbuf, 5235 rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk),
5241 &rdev, &netdev); 5236 nl80211_fam.attrbuf);
5242 if (err) 5237 if (IS_ERR(rdev)) {
5243 return err; 5238 mutex_unlock(&cfg80211_mutex);
5244 dev_put(netdev); 5239 return PTR_ERR(rdev);
5245 phy_idx = rdev->wiphy_idx;
5246 cfg80211_unlock_rdev(rdev);
5247 } 5240 }
5241 phy_idx = rdev->wiphy_idx;
5242 rdev = NULL;
5243 mutex_unlock(&cfg80211_mutex);
5244
5248 if (nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA]) 5245 if (nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA])
5249 cb->args[1] = 5246 cb->args[1] =
5250 (long)nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA]; 5247 (long)nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA];