lkml.org 
[lkml]   [2024]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [EXT] [PATCH] octeontx2-pf: Fix a memleak otx2_sq_init
Date
Looks good to me.

Thanks,
Sundeep

>-----Original Message-----
>From: Zhipeng Lu <alexious@zju.edu.cn>
>Sent: Thursday, February 1, 2024 6:17 PM
>To: alexious@zju.edu.cn
>Cc: Sunil Kovvuri Goutham <sgoutham@marvell.com>; Geethasowjanya Akula
><gakula@marvell.com>; Subbaraya Sundeep Bhatta <sbhatta@marvell.com>;
>Hariprasad Kelam <hkelam@marvell.com>; David S. Miller
><davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub Kicinski
><kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; Jesse Brandeburg
><jesse.brandeburg@intel.com>; Richard Cochran <richardcochran@gmail.com>;
>netdev@vger.kernel.org; linux-kernel@vger.kernel.org
>Subject: [EXT] [PATCH] octeontx2-pf: Fix a memleak otx2_sq_init
>
>External Email
>
>----------------------------------------------------------------------
>When qmem_alloc and pfvf->hw_ops->sq_aq_init fails, sq->sg should be freed to
>prevent memleak.
>
>Fixes: c9c12d339d93 ("octeontx2-pf: Add support for PTP clock")
>Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn>
>---
> .../ethernet/marvell/octeontx2/nic/otx2_common.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>index 7ca6941ea0b9..02d0b707aea5 100644
>--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>@@ -951,8 +951,11 @@ int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16
>sqb_aura)
> if (pfvf->ptp && qidx < pfvf->hw.tx_queues) {
> err = qmem_alloc(pfvf->dev, &sq->timestamps, qset->sqe_cnt,
> sizeof(*sq->timestamps));
>- if (err)
>+ if (err) {
>+ kfree(sq->sg);
>+ sq->sg = NULL;
> return err;
>+ }
> }
>
> sq->head = 0;
>@@ -968,7 +971,14 @@ int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16
>sqb_aura)
> sq->stats.bytes = 0;
> sq->stats.pkts = 0;
>
>- return pfvf->hw_ops->sq_aq_init(pfvf, qidx, sqb_aura);
>+ err = pfvf->hw_ops->sq_aq_init(pfvf, qidx, sqb_aura);
>+ if (err) {
>+ kfree(sq->sg);
>+ sq->sg = NULL;
>+ return err;
>+ }
>+
>+ return 0;
>
> }
>
>--
>2.34.1


\
 
 \ /
  Last update: 2024-05-27 14:45    [W:0.074 / U:0.856 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site