From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 4E7954B4B for ; Wed, 17 Jan 2018 09:42:58 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Jan 2018 00:42:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,372,1511856000"; d="scan'208";a="166751100" Received: from idiamand-mobl1.ger.corp.intel.com (HELO [10.252.24.194]) ([10.252.24.194]) by orsmga004.jf.intel.com with ESMTP; 17 Jan 2018 00:42:56 -0800 To: dev@dpdk.org References: <9d5a3bc7a779b2dddab4256aa3e0631737861f98.1513867589.git.anatoly.burakov@intel.com> <0d7441e49767fd64c4549430c08b9193d4f870a4.1515845958.git.anatoly.burakov@intel.com> From: "Burakov, Anatoly" Message-ID: Date: Wed, 17 Jan 2018 08:42:55 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <0d7441e49767fd64c4549430c08b9193d4f870a4.1515845958.git.anatoly.burakov@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v2 3/6] test: fix memory leak in ring autotest X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2018 08:42:58 -0000 On 17-Jan-18 8:36 AM, Anatoly Burakov wrote: > Get rid of global static ring variable and don't reuse rings > between test runs. > > Fixes: af75078fece3 ("first public release") > Cc: stable@dpdk.org > > Signed-off-by: Anatoly Burakov > --- > test/test/test_ring.c | 61 ++++++++++++++++++++++++++++----------------------- > 1 file changed, 33 insertions(+), 28 deletions(-) > > diff --git a/test/test/test_ring.c b/test/test/test_ring.c > index 19d497a..b339f04 100644 > --- a/test/test/test_ring.c > +++ b/test/test/test_ring.c > @@ -57,8 +57,6 @@ > > static rte_atomic32_t synchro; > > -static struct rte_ring *r; > - > #define TEST_RING_VERIFY(exp) \ > if (!(exp)) { \ > printf("error at %s:%d\tcondition " #exp " failed\n", \ > @@ -73,7 +71,7 @@ static struct rte_ring *r; > * helper routine for test_ring_basic > */ > static int > -test_ring_basic_full_empty(void * const src[], void *dst[]) > +test_ring_basic_full_empty(struct rte_ring *r, void * const src[], void *dst[]) > { > unsigned i, rand; > const unsigned rsz = RING_SIZE - 1; > @@ -114,7 +112,7 @@ test_ring_basic_full_empty(void * const src[], void *dst[]) > } > > static int > -test_ring_basic(void) > +test_ring_basic(struct rte_ring *r) > { > void **src = NULL, **cur_src = NULL, **dst = NULL, **cur_dst = NULL; > int ret; > @@ -250,7 +248,7 @@ test_ring_basic(void) > goto fail; > } > > - if (test_ring_basic_full_empty(src, dst) != 0) > + if (test_ring_basic_full_empty(r, src, dst) != 0) > goto fail; > > cur_src = src; > @@ -317,7 +315,7 @@ test_ring_basic(void) > } > > static int > -test_ring_burst_basic(void) > +test_ring_burst_basic(struct rte_ring *r) > { > void **src = NULL, **cur_src = NULL, **dst = NULL, **cur_dst = NULL; > int ret; > @@ -731,6 +729,7 @@ test_ring_basic_ex(void) > > ret = 0; > fail_test: > + rte_ring_free(rp); > if (obj != NULL) > rte_free(obj); > > @@ -811,61 +810,67 @@ test_ring_with_exact_size(void) > static int > test_ring(void) > { > + struct rte_ring *r = NULL; > + > /* some more basic operations */ > if (test_ring_basic_ex() < 0) > - return -1; > + goto test_fail; > > rte_atomic32_init(&synchro); > > + r = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, 0); > if (r == NULL) > - r = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, 0); > - if (r == NULL) > - return -1; > + goto test_fail; > > /* retrieve the ring from its name */ > if (rte_ring_lookup("test") != r) { > printf("Cannot lookup ring from its name\n"); > - return -1; > + goto test_fail; > } > > /* burst operations */ > - if (test_ring_burst_basic() < 0) > - return -1; > + if (test_ring_burst_basic(r) < 0) > + goto test_fail; > > /* basic operations */ > - if (test_ring_basic() < 0) > - return -1; > + if (test_ring_basic(r) < 0) > + goto test_fail; > > /* basic operations */ > if ( test_create_count_odd() < 0){ > - printf ("Test failed to detect odd count\n"); > - return -1; > - } > - else > - printf ( "Test detected odd count\n"); > + printf("Test failed to detect odd count\n"); > + goto test_fail; > + } else > + printf("Test detected odd count\n"); > > if ( test_lookup_null() < 0){ > - printf ("Test failed to detect NULL ring lookup\n"); > - return -1; > - } > - else > - printf ( "Test detected NULL ring lookup \n"); > + printf("Test failed to detect NULL ring lookup\n"); > + goto test_fail; > + } else > + printf("Test detected NULL ring lookup\n"); > > /* test of creating ring with wrong size */ > if (test_ring_creation_with_wrong_size() < 0) > - return -1; > + goto test_fail; > > /* test of creation ring with an used name */ > if (test_ring_creation_with_an_used_name() < 0) > - return -1; > + goto test_fail; > > if (test_ring_with_exact_size() < 0) > - return -1; > + goto test_fail; > > /* dump the ring status */ > rte_ring_list_dump(stdout); > > + rte_ring_free(r); > + > return 0; > + > +test_fail: > + rte_ring_free(r); > + > + return -1; > } > > REGISTER_TEST_COMMAND(ring_autotest, test_ring); > Apologies, for some reason the old and incorrect commit message was attached. I'll respin it. -- Thanks, Anatoly