mac80211: fix rx->key NULL dereference during mic failure

Sometimes when reporting a MIC failure rx->key may be unset. This
code path is hit when receiving a packet meant for a multicast
address, and decryption is performed in HW.

Fortunately, the failing key_idx is not used for anything up to
(and including) usermode, so we allow ourselves to drop it on the
way up when a key cannot be retrieved.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Arik Nemtsov
2011-06-23 00:00:24 +03:00
committed by John W. Linville
szülő 8fcbd4dc7a
commit a66b98db57
3 fájl változott, egészen pontosan 10 új sor hozzáadva és 3 régi sor törölve

Fájl megtekintése

@@ -154,7 +154,13 @@ update_iv:
return RX_CONTINUE;
mic_fail:
mac80211_ev_michael_mic_failure(rx->sdata, rx->key->conf.keyidx,
/*
* In some cases the key can be unset - e.g. a multicast packet, in
* a driver that supports HW encryption. Send up the key idx only if
* the key is set.
*/
mac80211_ev_michael_mic_failure(rx->sdata,
rx->key ? rx->key->conf.keyidx : -1,
(void *) skb->data, NULL, GFP_ATOMIC);
return RX_DROP_UNUSABLE;
}