Kalle Valo says:
[linux-block.git] / net / mac80211 / rx.c
index ac86910269034f1165562adda181dcf884460830..c28c6fbf786ee0cf9c5b4b6a99acb0cb514da989 100644 (file)
@@ -1975,10 +1975,11 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
 
                if (mmie_keyidx < NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS ||
                    mmie_keyidx >= NUM_DEFAULT_KEYS + NUM_DEFAULT_MGMT_KEYS +
-                   NUM_DEFAULT_BEACON_KEYS) {
-                       cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
-                                                    skb->data,
-                                                    skb->len);
+                                  NUM_DEFAULT_BEACON_KEYS) {
+                       if (rx->sdata->dev)
+                               cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
+                                                            skb->data,
+                                                            skb->len);
                        return RX_DROP_MONITOR; /* unexpected BIP keyidx */
                }
 
@@ -2128,7 +2129,8 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
        /* either the frame has been decrypted or will be dropped */
        status->flag |= RX_FLAG_DECRYPTED;
 
-       if (unlikely(ieee80211_is_beacon(fc) && result == RX_DROP_UNUSABLE))
+       if (unlikely(ieee80211_is_beacon(fc) && result == RX_DROP_UNUSABLE &&
+                    rx->sdata->dev))
                cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
                                             skb->data, skb->len);