diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2013-06-25 03:17:17 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-11 21:35:22 -0400 |
commit | c8942c6aac25cc5e98161c1a6b84b6ae10bff945 (patch) | |
tree | a4cee4217877d9d22d1c5d82135912de8f0bf9c7 | |
parent | e59f8a9d54603dcadbee294849988d1876d4bd38 (diff) |
nl80211: fix mgmt tx status and testmode reporting for netns
commit a0ec570f4f69c4cb700d743a915096c2c8f56a99 upstream.
These two events were sent to the default network
namespace.
This caused AP mode in a non-default netns to not
work correctly. Mgmt tx status was multicasted to
a different (default) netns instead of the one the
AP was in.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | net/wireless/nl80211.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index b14b7e3cb6e6..db8ead94ff7a 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -6588,12 +6588,14 @@ EXPORT_SYMBOL(cfg80211_testmode_alloc_event_skb); | |||
6588 | 6588 | ||
6589 | void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp) | 6589 | void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp) |
6590 | { | 6590 | { |
6591 | struct cfg80211_registered_device *rdev = ((void **)skb->cb)[0]; | ||
6591 | void *hdr = ((void **)skb->cb)[1]; | 6592 | void *hdr = ((void **)skb->cb)[1]; |
6592 | struct nlattr *data = ((void **)skb->cb)[2]; | 6593 | struct nlattr *data = ((void **)skb->cb)[2]; |
6593 | 6594 | ||
6594 | nla_nest_end(skb, data); | 6595 | nla_nest_end(skb, data); |
6595 | genlmsg_end(skb, hdr); | 6596 | genlmsg_end(skb, hdr); |
6596 | genlmsg_multicast(skb, 0, nl80211_testmode_mcgrp.id, gfp); | 6597 | genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), skb, 0, |
6598 | nl80211_testmode_mcgrp.id, gfp); | ||
6597 | } | 6599 | } |
6598 | EXPORT_SYMBOL(cfg80211_testmode_event); | 6600 | EXPORT_SYMBOL(cfg80211_testmode_event); |
6599 | #endif | 6601 | #endif |
@@ -10028,7 +10030,8 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie, | |||
10028 | 10030 | ||
10029 | genlmsg_end(msg, hdr); | 10031 | genlmsg_end(msg, hdr); |
10030 | 10032 | ||
10031 | genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp); | 10033 | genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, |
10034 | nl80211_mlme_mcgrp.id, gfp); | ||
10032 | return; | 10035 | return; |
10033 | 10036 | ||
10034 | nla_put_failure: | 10037 | nla_put_failure: |