mac80211: Fix scan RX processing oops
authorJouni Malinen <j@w1.fi>
Sat, 11 Oct 2008 00:29:55 +0000 (03:29 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 15 Oct 2008 01:08:11 +0000 (21:08 -0400)
ieee80211_bss_info_update() can return NULL. Verify that this is not the
case before calling ieee802111_rx_bss_put() which would trigger an oops
in interrupt context in atomic_dec_and_lock().

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Benoit Papillault <benoit.papillault@free.fr>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/scan.c

index 8e6685e7ae8595569582ecdf7ea67340da79f2fa..416bb41099f361159d0bc578533d08a371a7de03 100644 (file)
@@ -388,7 +388,8 @@ ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb,
        bss = ieee80211_bss_info_update(sdata->local, rx_status,
                                        mgmt, skb->len, &elems,
                                        freq, beacon);
-       ieee80211_rx_bss_put(sdata->local, bss);
+       if (bss)
+               ieee80211_rx_bss_put(sdata->local, bss);
 
        dev_kfree_skb(skb);
        return RX_QUEUED;