The following commit has been merged in the linux branch: commit 8a8e05e5d8f6155788761961fc9845328863c16d Author: Johannes Berg johannes@sipsolutions.net Date: Thu Oct 8 21:02:02 2009 +0200
cfg80211: fix netns error unwinding bug
The error unwinding code in set_netns has a bug that will make it run into a BUG_ON if passed a bad wiphy index, fix by not trying to unlock a wiphy that doesn't exist.
Signed-off-by: Johannes Berg johannes@sipsolutions.net Signed-off-by: John W. Linville linville@tuxdriver.com
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index eddab09..ca3c92a 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -4029,7 +4029,7 @@ static int nl80211_wiphy_netns(struct sk_buff *skb, struct genl_info *info) rdev = cfg80211_get_dev_from_info(info); if (IS_ERR(rdev)) { err = PTR_ERR(rdev); - goto out; + goto out_rtnl; }
net = get_net_ns_by_pid(pid); @@ -4049,6 +4049,7 @@ static int nl80211_wiphy_netns(struct sk_buff *skb, struct genl_info *info) put_net(net); out: cfg80211_unlock_rdev(rdev); + out_rtnl: rtnl_unlock(); return err; }