summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>2010-09-24 07:23:55 +0300
committerJohn W. Linville <linville@tuxdriver.com>2010-09-27 15:57:47 -0400
commit92e44948b2b3b2db8f39f17033f98ae2356156a5 (patch)
treefd617ba0a5d939cbe03cfb579ee3e39c46fe2255
parent56af326830757f3e8a1742770d15dfd6e3c40e85 (diff)
nl80211: Fix exit from nl80211_set_power_save
If interface does not existk, when nl80211_set_power_save is called, (eg. module has been unloaded) it has been causing kernel panic. Added new goto target to avoid crash if get_rdev_dev_by_info_ifindex does not return dev and rdev pointers. Signed-off-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/wireless/nl80211.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index f15b1af2c76..4ff827e8c36 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -4990,7 +4990,7 @@ static int nl80211_set_power_save(struct sk_buff *skb, struct genl_info *info)
err = get_rdev_dev_by_info_ifindex(info, &rdev, &dev);
if (err)
- goto unlock_rdev;
+ goto unlock_rtnl;
wdev = dev->ieee80211_ptr;
@@ -5014,6 +5014,7 @@ static int nl80211_set_power_save(struct sk_buff *skb, struct genl_info *info)
unlock_rdev:
cfg80211_unlock_rdev(rdev);
dev_put(dev);
+unlock_rtnl:
rtnl_unlock();
out: