From 33602d32a0c303fe0b67cc7a964c2a7acaac3704 Mon Sep 17 00:00:00 2001 From: changsu kim Date: Wed, 13 Mar 2024 16:49:46 +0900 Subject: [PATCH] Fix to free pages This PR fixes a memory leak problem on the page buffers for receiving packets. Signed-off-by: changsu kim --- onic_netdev.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/onic_netdev.c b/onic_netdev.c index a39a5ab..e477cf5 100644 --- a/onic_netdev.c +++ b/onic_netdev.c @@ -412,8 +412,8 @@ static void onic_clear_rx_queue(struct onic_private *priv, u16 qid) { struct onic_rx_queue *q = priv->rx_queue[qid]; struct onic_ring *ring; - u32 size; - int real_count; + u32 size, real_count; + int i; if (!q) return; @@ -441,6 +441,11 @@ static void onic_clear_rx_queue(struct onic_private *priv, u16 qid) dma_free_coherent(&priv->pdev->dev, size, ring->desc, ring->dma_addr); + for (i = 0; i < real_count; ++i) { + struct page *pg = q->buffer[i].pg; + __free_pages(pg, 0); + } + kfree(q->buffer); kfree(q); priv->rx_queue[qid] = NULL;