| From | Andi Kleen <> | Subject | [PATCH] [11/223] cfg80211: fix locking | Date | Mon, 13 Dec 2010 00:45:06 +0100 (CET) |
| |
2.6.35-longterm review patch. If anyone has any objections, please let me know.
------------------ From: Johannes Berg <johannes.berg@intel.com>
commit 2234362c427e2ef667595b9b81c0125003ac5607 upstream.
Add missing unlocking of the wiphy in set_channel, and don't try to unlock a non-existing wiphy in set_cqm.
Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Andi Kleen <ak@linux.intel.com>
--- net/wireless/nl80211.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
Index: linux/net/wireless/nl80211.c =================================================================== --- linux.orig/net/wireless/nl80211.c +++ linux/net/wireless/nl80211.c @@ -758,11 +758,13 @@ static int nl80211_set_channel(struct sk result = get_rdev_dev_by_info_ifindex(info, &rdev, &netdev); if (result) - goto unlock; + goto unlock_rtnl; result = __nl80211_set_channel(rdev, netdev->ieee80211_ptr, info); - unlock: + dev_put(netdev); + cfg80211_unlock_rdev(rdev); + unlock_rtnl: rtnl_unlock(); return result; @@ -4909,7 +4911,7 @@ static int nl80211_set_cqm_rssi(struct g err = get_rdev_dev_by_info_ifindex(info, &rdev, &dev); if (err) - goto unlock_rdev; + goto unlock_rtnl; wdev = dev->ieee80211_ptr; @@ -4926,9 +4928,10 @@ static int nl80211_set_cqm_rssi(struct g err = rdev->ops->set_cqm_rssi_config(wdev->wiphy, dev, threshold, hysteresis); -unlock_rdev: + unlock_rdev: cfg80211_unlock_rdev(rdev); dev_put(dev); + unlock_rtnl: rtnl_unlock(); return err;
|