]> git.droids-corp.org - dpdk.git/commitdiff
malloc: do not skip pad on free
authorAnatoly Burakov <anatoly.burakov@intel.com>
Thu, 19 Jul 2018 09:42:46 +0000 (10:42 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 20 Jul 2018 09:21:31 +0000 (11:21 +0200)
Previously, we were skipping erasing pad because we were
expecting it to be freed when we were merging adjacent
segments. However, if there were no adjacent segments to
merge, we would've skipped erasing the pad, leaving non-zero
memory in our free space.

Fix this by including pad in the erasing unconditionally.

Fixes: e43a9f52b7ff ("malloc: fix pad erasing")
Cc: stable@dpdk.org
Reported-by: Andrew Rybchenko <arybchenko@solarflare.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
lib/librte_eal/common/malloc_elem.c

index efcb82677198ffeb8725f636fb19d2935ecc8bd5..e0a8ed15b4d64178a2758596bd693b994b1423d4 100644 (file)
@@ -519,8 +519,8 @@ malloc_elem_free(struct malloc_elem *elem)
        void *ptr;
        size_t data_len;
 
-       ptr = RTE_PTR_ADD(elem, MALLOC_ELEM_HEADER_LEN + elem->pad);
-       data_len = elem->size - elem->pad - MALLOC_ELEM_OVERHEAD;
+       ptr = RTE_PTR_ADD(elem, MALLOC_ELEM_HEADER_LEN);
+       data_len = elem->size - MALLOC_ELEM_OVERHEAD;
 
        elem = malloc_elem_join_adjacent_free(elem);