From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier Matz Subject: Re: [PATCH v2 1/2] test/mempool_perf: Free mempool on exit Date: Fri, 7 Apr 2017 17:51:02 +0200 Message-ID: <20170407175102.4f2152c1@platinum> References: <1491382264-23489-1-git-send-email-santosh.shukla@caviumnetworks.com> <20170406064549.7966-1-santosh.shukla@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, hemant.agrawal@nxp.com, shreyansh.jain@nxp.com, stable@dpdk.org To: Santosh Shukla Return-path: Received: from mail-wr0-f182.google.com (mail-wr0-f182.google.com [209.85.128.182]) by dpdk.org (Postfix) with ESMTP id 709C35A3E for ; Fri, 7 Apr 2017 17:51:06 +0200 (CEST) Received: by mail-wr0-f182.google.com with SMTP id c55so38506866wrc.3 for ; Fri, 07 Apr 2017 08:51:06 -0700 (PDT) In-Reply-To: <20170406064549.7966-1-santosh.shukla@caviumnetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Santosh, On Thu, 6 Apr 2017 12:15:48 +0530, Santosh Shukla wrote: > Mempool_perf test not freeing pool memory. > > Cc: stable@dpdk.org > Signed-off-by: Santosh Shukla > Acked-by: Shreyansh Jain > --- > v1 --> v2: > * Fixed patch context > > test/test/test_mempool_perf.c | 31 +++++++++++++++++++------------ > 1 file changed, 19 insertions(+), 12 deletions(-) > > diff --git a/test/test/test_mempool_perf.c b/test/test/test_mempool_perf.c > index ebf1721ac..3c45971ab 100644 > --- a/test/test/test_mempool_perf.c > +++ b/test/test/test_mempool_perf.c > @@ -312,6 +312,8 @@ do_one_mempool_test(unsigned cores) > static int > test_mempool_perf(void) > { > + int ret = -1; > + > rte_atomic32_init(&synchro); > > /* create a mempool (without cache) */ > @@ -322,7 +324,7 @@ test_mempool_perf(void) > my_obj_init, NULL, > SOCKET_ID_ANY, 0); > if (mp_nocache == NULL) > - return -1; > + goto err; > > /* create a mempool (with cache) */ > if (mp_cache == NULL) [...] > > - return 0; > + ret = 0; > + > +err: > + rte_mempool_free(mp_cache); > + rte_mempool_free(mp_nocache); > + return ret; Since mp_cache and mp_nocache are global variables, this won't work properly due to the way mempool are created: /* create a mempool (without cache) */ if (mp_nocache == NULL) mp_nocache = rte_mempool_create("perf_test_nocache", MEMPOOL_SIZE, MEMPOOL_ELT_SIZE, 0, 0, NULL, NULL, my_obj_init, NULL, SOCKET_ID_ANY, 0); The if() should be removed, else we'll have a use after free the next time. If you want to do more clean-up, you can try to remove the global variables, but it's maybe harder. Thanks, Olivier