mem: fix freeing of memzone used by ivshmem
Although previous implementation returned an error when trying to release a memzone assigned to an ivshmem device, it stills freed it. Fixes: cd10c42eb5bc ("mem: fix ivshmem freeing") Signed-off-by: Mauricio Vasquez B <mauricio.vasquezbernal@studenti.polito.it> Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
This commit is contained in:
parent
d89a58dfe9
commit
31ca33ff93
@ -321,15 +321,19 @@ rte_memzone_free(const struct rte_memzone *mz)
|
||||
idx = ((uintptr_t)mz - (uintptr_t)mcfg->memzone);
|
||||
idx = idx / sizeof(struct rte_memzone);
|
||||
|
||||
addr = mcfg->memzone[idx].addr;
|
||||
#ifdef RTE_LIBRTE_IVSHMEM
|
||||
/*
|
||||
* If ioremap_addr is set, it's an IVSHMEM memzone and we cannot
|
||||
* free it.
|
||||
*/
|
||||
if (mcfg->memzone[idx].ioremap_addr != 0)
|
||||
ret = -EINVAL;
|
||||
if (mcfg->memzone[idx].ioremap_addr != 0) {
|
||||
rte_rwlock_write_unlock(&mcfg->mlock);
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
addr = mcfg->memzone[idx].addr;
|
||||
|
||||
if (addr == NULL)
|
||||
ret = -EINVAL;
|
||||
else if (mcfg->memzone_cnt == 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user