[PATCH wireless] wifi: mwifiex: zero-pad SDIO TX buffer to block-aligned transfer length

From: Tristan Madani

Date: Mon Nov 02 2026 - 17:19:54 EST


mwifiex_sdio_host_to_card() rounds up the packet length to
MWIFIEX_SDIO_BLOCK_SIZE (256 bytes) for SDIO block-mode transfers.
When the original skb data is shorter than the rounded-up length, the
SDIO controller reads past the valid payload into uninitialized skb
tailroom, transmitting stale data to the wireless device firmware.

Extend the skb to the block-aligned transfer length and zero the
padding when sufficient tailroom is available, preventing the data
leak.

Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Tristan Madani <tristan@xxxxxxxxxxxxxxxxxxx>
---
drivers/net/wireless/marvell/mwifiex/sdio.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/marvell/mwifiex/sdio.c b/drivers/net/wireless/marvell/mwifiex/sdio.c
index f039d6f19183a..c46a048cc961a 100644
--- a/drivers/net/wireless/marvell/mwifiex/sdio.c
+++ b/drivers/net/wireless/marvell/mwifiex/sdio.c
@@ -2386,6 +2386,9 @@ static int mwifiex_sdio_host_to_card(struct mwifiex_adapter *adapter,
/* Transfer data to card */
pkt_len = buf_block_len * blk_size;

+ if (pkt_len > skb->len && skb_tailroom(skb) >= pkt_len - skb->len)
+ memset(skb_put(skb, pkt_len - skb->len), 0, pkt_len - skb->len);
+
if (tx_param)
ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len,
port, tx_param->next_pkt_len
--
2.47.3