mirror of https://gitee.com/openkylin/linux.git
rt2x00: Fix MMIC Countermeasures
Set RX_FLAG_DECRYPTED in case of MMIC failure so that ieee80211_rx_h_decrypt() doesnt drop the frame before getting to ieee80211_rx_h_michael_mic_verify(). Signed-off-by: Michael Skeffington <mike@astro.ai> Acked-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
cb1b82625d
commit
2db3aaba0a
|
@ -136,10 +136,19 @@ void rt2800mmio_fill_rxdone(struct queue_entry *entry,
|
|||
*/
|
||||
rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
|
||||
|
||||
if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
|
||||
if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) {
|
||||
rxdesc->flags |= RX_FLAG_DECRYPTED;
|
||||
else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)
|
||||
} else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) {
|
||||
/*
|
||||
* In order to check the Michael Mic, the packet must have
|
||||
* been decrypted. Mac80211 doesnt check the MMIC failure
|
||||
* flag to initiate MMIC countermeasures if the decoded flag
|
||||
* has not been set.
|
||||
*/
|
||||
rxdesc->flags |= RX_FLAG_DECRYPTED;
|
||||
|
||||
rxdesc->flags |= RX_FLAG_MMIC_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (rt2x00_get_field32(word, RXD_W3_MY_BSS))
|
||||
|
|
|
@ -697,11 +697,20 @@ static void rt2800usb_fill_rxdone(struct queue_entry *entry,
|
|||
* stripped it from the frame. Signal this to mac80211.
|
||||
*/
|
||||
rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
|
||||
|
||||
if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
|
||||
|
||||
if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) {
|
||||
rxdesc->flags |= RX_FLAG_DECRYPTED;
|
||||
else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)
|
||||
} else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) {
|
||||
/*
|
||||
* In order to check the Michael Mic, the packet must have
|
||||
* been decrypted. Mac80211 doesnt check the MMIC failure
|
||||
* flag to initiate MMIC countermeasures if the decoded flag
|
||||
* has not been set.
|
||||
*/
|
||||
rxdesc->flags |= RX_FLAG_DECRYPTED;
|
||||
|
||||
rxdesc->flags |= RX_FLAG_MMIC_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (rt2x00_get_field32(word, RXD_W0_MY_BSS))
|
||||
|
|
Loading…
Reference in New Issue