[PATCH v2 06/11] malloc: check result of rte_mem_virt2memseg_list
Dmitry Kozlyuk
dmitry.kozliuk at gmail.com
Tue Nov 22 16:52:30 CET 2022
2022-11-21 17:32 (UTC-0500), okaya at kernel.org:
> From: Sinan Kaya <okaya at kernel.org>
>
> In alloc_pages_on_heap result of call to rte_mem_virt2memseg_list
> is dereferenced here and may be null.
>
> Signed-off-by: Sinan Kaya <okaya at kernel.org>
> ---
> lib/eal/common/malloc_heap.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/lib/eal/common/malloc_heap.c b/lib/eal/common/malloc_heap.c
> index 503e551bf9..3f41430e42 100644
> --- a/lib/eal/common/malloc_heap.c
> +++ b/lib/eal/common/malloc_heap.c
> @@ -323,6 +323,8 @@ alloc_pages_on_heap(struct malloc_heap *heap, uint64_t pg_sz, size_t elt_size,
>
> map_addr = ms[0]->addr;
> msl = rte_mem_virt2memseg_list(map_addr);
> + if (msl == NULL)
> + return NULL;
It is not really possible, because the memory lock is held,
so "map_addr" cannot be unmapped/remapped concurrently,
and "ms" belongs to some MSL by definition of memseg.
RTE_ASSERT() can be added for clarity.
More information about the dev
mailing list