malloc: fix realloc padded element size
authorXueming Li <xuemingl@mellanox.com>
Tue, 12 Nov 2019 14:50:28 +0000 (14:50 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Wed, 20 Nov 2019 13:08:39 +0000 (14:08 +0100)
When resize a memory with next element, the original element size grows.
If the orginal element has padding, the real inner element size didn't
grow as well and this causes trailer verification failure when malloc
debug enabled.

Fixes: af75078fece3 ("first public release")
Cc: stable@dpdk.org
Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/common/malloc_elem.c

index 658c9b5..afacb18 100644 (file)
@@ -307,6 +307,11 @@ split_elem(struct malloc_elem *elem, struct malloc_elem *split_pt)
        elem->next = split_pt;
        elem->size = old_elem_size;
        set_trailer(elem);
+       if (elem->pad) {
+               /* Update inner padding inner element size. */
+               elem = RTE_PTR_ADD(elem, elem->pad);
+               elem->size = old_elem_size - elem->pad;
+       }
 }
 
 /*