malloc: avoid padding elements on page deallocation
authorAnatoly Burakov <anatoly.burakov@intel.com>
Wed, 2 May 2018 15:38:16 +0000 (16:38 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 2 May 2018 16:35:19 +0000 (18:35 +0200)
commit0db6d2782cfabb8ceb10052897e30ac084010894
tree476d8b6ba21e7a3b0327d642acb01ca83097bd76
parentdc14d4f026b734d42365de998103acb24a9edd0e
malloc: avoid padding elements on page deallocation

Currently, when deallocating pages, malloc will fixup other
elements' headers if there is not enough space to store a full
element in leftover space. This leads to race conditions because
there are some functions that check for pad size with an unlocked
heap, expecting pad size to be constant.

Fix it by being more conservative and only freeing pages when
there is enough space before and after the page to store a free
element.

Fixes: 1403f87d4fb8 ("malloc: enable memory hotplug support")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/common/malloc_elem.c
lib/librte_eal/common/malloc_elem.h
lib/librte_eal/common/malloc_heap.c