aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2014-11-14 12:43:28 -0500
committerJohannes Berg <johannes.berg@intel.com>2014-11-19 12:50:34 -0500
commitd687cbb703f50980e155c5642cf229ec2bb45e3e (patch)
tree6d4d167a3b672ad05a814d899bbbde8a89240e94 /net/wireless
parentc7ab508190aee6b4a62cfab7ee08457602468672 (diff)
cfg80211: protect fools returning NULL in add_virtual_intf
Callback add_virtual_intf is supposed to return ERR_PTR and trying to return NULL results in some "Unable to handle kernel paging request", etc. As it may be complicated to debug & trace, let's catch it (WARN). Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/nl80211.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index dd5a827f9cb0..5cfd75dfff67 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2645,7 +2645,10 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
2645 wdev = rdev_add_virtual_intf(rdev, 2645 wdev = rdev_add_virtual_intf(rdev,
2646 nla_data(info->attrs[NL80211_ATTR_IFNAME]), 2646 nla_data(info->attrs[NL80211_ATTR_IFNAME]),
2647 type, err ? NULL : &flags, &params); 2647 type, err ? NULL : &flags, &params);
2648 if (IS_ERR(wdev)) { 2648 if (WARN_ON(!wdev)) {
2649 nlmsg_free(msg);
2650 return -EPROTO;
2651 } else if (IS_ERR(wdev)) {
2649 nlmsg_free(msg); 2652 nlmsg_free(msg);
2650 return PTR_ERR(wdev); 2653 return PTR_ERR(wdev);
2651 } 2654 }