Hi Santosh,

On Thu,  6 Apr 2017 12:15:48 +0530, Santosh Shukla 
<santosh.shu...@caviumnetworks.com> wrote:
> Mempool_perf test not freeing pool memory.
> 
> Cc: sta...@dpdk.org
> Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com>
> Acked-by: Shreyansh Jain <shreyansh.j...@nxp.com>
> ---
> 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

Reply via email to