nl80211: don't crash sending invalid chandef
authorJohannes Berg <johannes.berg@intel.com>
Thu, 27 Nov 2014 16:26:56 +0000 (17:26 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 27 Nov 2014 16:27:52 +0000 (17:27 +0100)
One of the cases for an invalid channel definition is that
the channel pointer is NULL, in which case the warning is
a bit late since we'll dereference the pointer. Bail out
of the function upon warning about this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/nl80211.c

index e11980e74a04d2d1bc58dfc39e415cbc88f5f98d..4fae26d722f892aaef79e4bf19ea6758def8c5dc 100644 (file)
@@ -2317,7 +2317,8 @@ static inline u64 wdev_id(struct wireless_dev *wdev)
 static int nl80211_send_chandef(struct sk_buff *msg,
                                const struct cfg80211_chan_def *chandef)
 {
-       WARN_ON(!cfg80211_chandef_valid(chandef));
+       if (WARN_ON(!cfg80211_chandef_valid(chandef)))
+               return -EINVAL;
 
        if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ,
                        chandef->chan->center_freq))