test/hash: fix potential memory leak
authorPablo de Lara <pablo.de.lara.guarch@intel.com>
Tue, 17 Jul 2018 13:31:51 +0000 (14:31 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 26 Jul 2018 19:52:31 +0000 (21:52 +0200)
In the multiwriter test, if "found" array allocation failed,
the memory of "keys" array, which was successfully allocated
could not be freed, since by this time, tbl_multiwriter_test_params.keys
was not set to this array, which is the pointer freed when finishing
the test or when a failure happens.

To solve this, tbl_multiwriter_test_params.keys is set to the "keys"
address, just after allocating and filling the array.

Fixes: be856325cba3 ("hash: add scalable multi-writer insertion with Intel TSX")
Cc: stable@dpdk.org
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
test/test/test_hash_multiwriter.c

index acd6a91..6a3eb10 100644 (file)
@@ -154,16 +154,17 @@ test_hash_multiwriter(void)
                goto err1;
        }
 
+       for (i = 0; i < nb_entries; i++)
+               keys[i] = i;
+
+       tbl_multiwriter_test_params.keys = keys;
+
        found = rte_zmalloc(NULL, sizeof(uint32_t) * nb_entries, 0);
        if (found == NULL) {
                printf("RTE_ZMALLOC failed\n");
                goto err2;
        }
 
-       for (i = 0; i < nb_entries; i++)
-               keys[i] = i;
-
-       tbl_multiwriter_test_params.keys = keys;
        tbl_multiwriter_test_params.found = found;
 
        rte_atomic64_init(&gcycles);