Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 314822
b: refs/heads/master
c: 4f7eff1
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg committed Jun 20, 2012
1 parent dd26b01 commit 7bc2c87
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 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: 7fee4778bf56b0c5c86010d5b6f654177cc5da96
refs/heads/master: 4f7eff10b20fc86f71f2db83e6b16cb5fbde8dbc
21 changes: 12 additions & 9 deletions trunk/net/wireless/nl80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static int get_rdev_dev_by_ifindex(struct net *netns, struct nlattr **attrs,
}

static struct cfg80211_registered_device *
__cfg80211_rdev_from_info(struct genl_info *info)
__cfg80211_rdev_from_info(struct net *netns, struct genl_info *info)
{
struct cfg80211_registered_device *rdev = NULL, *tmp;
struct net_device *netdev;
Expand All @@ -88,7 +88,7 @@ __cfg80211_rdev_from_info(struct genl_info *info)

if (info->attrs[NL80211_ATTR_IFINDEX]) {
int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]);
netdev = dev_get_by_index(genl_info_net(info), ifindex);
netdev = dev_get_by_index(netns, ifindex);
if (netdev) {
if (netdev->ieee80211_ptr)
tmp = wiphy_to_dev(
Expand All @@ -110,10 +110,13 @@ __cfg80211_rdev_from_info(struct genl_info *info)
}
}

if (rdev)
return rdev;
if (!rdev)
return ERR_PTR(-ENODEV);

return ERR_PTR(-ENODEV);
if (netns != wiphy_net(&rdev->wiphy))
return ERR_PTR(-ENODEV);

return rdev;
}

/*
Expand All @@ -137,12 +140,12 @@ __cfg80211_rdev_from_info(struct genl_info *info)
* be checked with IS_ERR() for errors.
*/
static struct cfg80211_registered_device *
cfg80211_get_dev_from_info(struct genl_info *info)
cfg80211_get_dev_from_info(struct net *netns, struct genl_info *info)
{
struct cfg80211_registered_device *rdev;

mutex_lock(&cfg80211_mutex);
rdev = __cfg80211_rdev_from_info(info);
rdev = __cfg80211_rdev_from_info(netns, info);

/* if it is not an error we grab the lock on
* it to assure it won't be going away while
Expand Down Expand Up @@ -1419,7 +1422,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
}

if (!netdev) {
rdev = __cfg80211_rdev_from_info(info);
rdev = __cfg80211_rdev_from_info(genl_info_net(info), info);
if (IS_ERR(rdev)) {
mutex_unlock(&cfg80211_mutex);
return PTR_ERR(rdev);
Expand Down Expand Up @@ -6623,7 +6626,7 @@ static int nl80211_pre_doit(struct genl_ops *ops, struct sk_buff *skb,
rtnl_lock();

if (ops->internal_flags & NL80211_FLAG_NEED_WIPHY) {
rdev = cfg80211_get_dev_from_info(info);
rdev = cfg80211_get_dev_from_info(genl_info_net(info), info);
if (IS_ERR(rdev)) {
if (rtnl)
rtnl_unlock();
Expand Down

0 comments on commit 7bc2c87

Please sign in to comment.