]> git.droids-corp.org - dpdk.git/commitdiff
mem: fix potential bad unmap on map failure
authorAnatoly Burakov <anatoly.burakov@intel.com>
Mon, 16 Apr 2018 14:37:30 +0000 (15:37 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 27 Apr 2018 21:42:40 +0000 (23:42 +0200)
Previously, if mmap failed to map page address at requested
address, we were attempting to unmap the wrong address. Fix it
by unmapping our actual mapped address, and jump further to
avoid unmapping memory that is not allocated.

Coverity issue: 272602
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/linuxapp/eal/eal_memalloc.c

index 174b1b752576f07d7cc8f9b119e5fd62f2288093..559e3f29c0c61a15a41c82dedd69ccf4e0f6b5fe 100644 (file)
@@ -466,7 +466,8 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,
        }
        if (va != addr) {
                RTE_LOG(DEBUG, EAL, "%s(): wrong mmap() address\n", __func__);
-               goto mapped;
+               munmap(va, alloc_sz);
+               goto resized;
        }
 
        rte_iova_t iova = rte_mem_virt2iova(addr);