staging: wfx: fix possible panic with re-queued frames
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Mon, 8 Feb 2021 13:52:54 +0000 (14:52 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Feb 2021 14:24:57 +0000 (15:24 +0100)
commit26df933d9b83ea668304dc4ec641d52ea1fc4091
tree985c4e9c4e2678f658dfc0df7f6f99e68a5dbee2
parentdc72a882b22e5509af90e2c25bbaeca4b17a31fa
staging: wfx: fix possible panic with re-queued frames

When the firmware rejects a frame (because station become asleep or
disconnected), the frame is re-queued in mac80211. However, the
re-queued frame was 8 bytes longer than the original one (the size of
the ICV for the encryption). So, when mac80211 try to send this frame
again, it is a little bigger than expected.
If the frame is re-queued secveral time it end with a skb_over_panic
because the skb buffer is not large enough.

Note it only happens when device acts as an AP and encryption is
enabled.

This patch more or less reverts the commit 049fde130419 ("staging: wfx:
drop useless field from struct wfx_tx_priv").

Fixes: 049fde130419 ("staging: wfx: drop useless field from struct wfx_tx_priv")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20210208135254.399964-1-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/data_tx.c
drivers/staging/wfx/data_tx.h