]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mwifiex: Fix memory leak in mwifiex_11n_aggregate_pkt()
authorZilin Guan <zilin@seu.edu.cn>
Mon, 19 Jan 2026 09:26:25 +0000 (09:26 +0000)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 2 Mar 2026 07:17:22 +0000 (08:17 +0100)
In mwifiex_11n_aggregate_pkt(), skb_aggr is allocated via
mwifiex_alloc_dma_align_buf(). If mwifiex_is_ralist_valid() returns false,
the function currently returns -1 immediately without freeing the
previously allocated skb_aggr, causing a memory leak.

Since skb_aggr has not yet been queued via skb_queue_tail(), no other
references to this memory exist. Therefore, it has to be freed locally
before returning the error.

Fix this by calling mwifiex_write_data_complete() to free skb_aggr before
returning the error status.

Compile tested only. Issue found using a prototype static analysis tool
and code review.

Fixes: 5e6e3a92b9a4 ("wireless: mwifiex: initial commit for Marvell mwifiex driver")
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
Reviewed-by: Jeff Chen <jeff.chen_1@nxp.com>
Link: https://patch.msgid.link/20260119092625.1349934-1-zilin@seu.edu.cn
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/marvell/mwifiex/11n_aggr.c

index 34b4b34276d6d35327495efbfce00008cb4aecc3..042b1fe5f0d676c64f23df77df7770c43439ebde 100644 (file)
@@ -203,6 +203,7 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
 
                if (!mwifiex_is_ralist_valid(priv, pra_list, ptrindex)) {
                        spin_unlock_bh(&priv->wmm.ra_list_spinlock);
+                       mwifiex_write_data_complete(adapter, skb_aggr, 1, -1);
                        return -1;
                }