mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 05:31:37 -04:00
net: lan966x: fix page pool leak in error paths
lan966x_fdma_rx_alloc() creates a page pool but does not destroy it if
the subsequent fdma_alloc_coherent() call fails, leaking the pool.
Similarly, lan966x_fdma_init() frees the coherent DMA memory when
lan966x_fdma_tx_alloc() fails but does not destroy the page pool that
was successfully created by lan966x_fdma_rx_alloc(), leaking it.
Add the missing page_pool_destroy() calls in both error paths.
Fixes: 11871aba19 ("net: lan96x: Use page_pool API")
Cc: stable@vger.kernel.org
Signed-off-by: David Carlier <devnexen@gmail.com>
Link: https://patch.msgid.link/20260405055241.35767-3-devnexen@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
3fd0da4fd8
commit
076344a6ad
@@ -119,8 +119,10 @@ static int lan966x_fdma_rx_alloc(struct lan966x_rx *rx)
|
||||
return PTR_ERR(rx->page_pool);
|
||||
|
||||
err = fdma_alloc_coherent(lan966x->dev, fdma);
|
||||
if (err)
|
||||
if (err) {
|
||||
page_pool_destroy(rx->page_pool);
|
||||
return err;
|
||||
}
|
||||
|
||||
fdma_dcbs_init(fdma, FDMA_DCB_INFO_DATAL(fdma->db_size),
|
||||
FDMA_DCB_STATUS_INTR);
|
||||
@@ -957,6 +959,7 @@ int lan966x_fdma_init(struct lan966x *lan966x)
|
||||
err = lan966x_fdma_tx_alloc(&lan966x->tx);
|
||||
if (err) {
|
||||
fdma_free_coherent(lan966x->dev, &lan966x->rx.fdma);
|
||||
page_pool_destroy(lan966x->rx.page_pool);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user