mem: avoid crash on memseg query with invalid address
authorDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Mon, 4 Jun 2018 05:33:41 +0000 (07:33 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 12 Jul 2018 22:25:08 +0000 (00:25 +0200)
When trying to use it with an address that's not
managed by DPDK it would segfault due to a missing
check. The doc says this function returns either
a pointer or NULL, so let it do so.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
Cc: stable@dpdk.org
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/common/eal_common_memory.c

index 4f0688f..ecc5bb2 100644 (file)
@@ -536,6 +536,9 @@ virt2memseg(const void *addr, const struct rte_memseg_list *msl)
        void *start, *end;
        int ms_idx;
 
+       if (msl == NULL)
+               return NULL;
+
        /* a memseg list was specified, check if it's the right one */
        start = msl->base_va;
        end = RTE_PTR_ADD(start, (size_t)msl->page_sz * msl->memseg_arr.len);