]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: airoha: Fix memory leak in airoha_qdma_rx_process()
authorLorenzo Bianconi <lorenzo@kernel.org>
Thu, 2 Apr 2026 12:57:10 +0000 (14:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Apr 2026 11:30:37 +0000 (13:30 +0200)
[ Upstream commit 285fa6b1e03cff78ead0383e1b259c44b95faf90 ]

If an error occurs on the subsequents buffers belonging to the
non-linear part of the skb (e.g. due to an error in the payload length
reported by the NIC or if we consumed all the available fragments for
the skb), the page_pool fragment will not be linked to the skb so it will
not return to the pool in the airoha_qdma_rx_process() error path. Fix the
memory leak partially reverting commit 'd6d2b0e1538d ("net: airoha: Fix
page recycling in airoha_qdma_rx_process()")' and always running
page_pool_put_full_page routine in the airoha_qdma_rx_process() error
path.

Fixes: d6d2b0e1538d ("net: airoha: Fix page recycling in airoha_qdma_rx_process()")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260402-airoha_qdma_rx_process-mem-leak-fix-v1-1-b5706f402d3c@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/airoha/airoha_eth.c

index 454d7dcf198d905c7e226251fd1862b355c0834f..fee5b2eddebb018950f8bafa6378d0dd1ca7911f 100644 (file)
@@ -697,9 +697,8 @@ free_frag:
                if (q->skb) {
                        dev_kfree_skb(q->skb);
                        q->skb = NULL;
-               } else {
-                       page_pool_put_full_page(q->page_pool, page, true);
                }
+               page_pool_put_full_page(q->page_pool, page, true);
        }
        airoha_qdma_fill_rx_queue(q);