memzone: fix leak on allocation error

We check if there's space in config after we allocated the memzone,
but if there isn't, we never free it back. This patch adds memzone
free if there's no room in memzone config.

Fixes: ff909fe21f ("mem: introduce memzone freeing")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
Anatoly Burakov 2017-12-21 18:07:07 +00:00 committed by Thomas Monjalon
parent fb033aceaf
commit db22d31a79

View File

@ -208,7 +208,7 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
return NULL;
}
const struct malloc_elem *elem = malloc_elem_from_data(mz_addr);
struct malloc_elem *elem = malloc_elem_from_data(mz_addr);
/* fill the zone in config */
mz = get_next_free_memzone();
@ -216,6 +216,7 @@ memzone_reserve_aligned_thread_unsafe(const char *name, size_t len,
if (mz == NULL) {
RTE_LOG(ERR, EAL, "%s(): Cannot find free memzone but there is room "
"in config!\n", __func__);
malloc_elem_free(elem);
rte_errno = ENOSPC;
return NULL;
}