net/ena: check pointer before memset

Need to check if memory allocation succeed before using it.
Using memset on NULL pointer cause segfault.

Fixes: 9ba7981ec9 ("ena: add communication layer for DPDK")
Cc: stable@dpdk.org

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
This commit is contained in:
Rafal Kozik 2018-06-07 11:43:18 +02:00 committed by Ferruh Yigit
parent ba82e010df
commit 46916aa17d

View File

@ -210,10 +210,15 @@ extern uint32_t ena_alloc_cnt;
"ena_alloc_%d", ena_alloc_cnt++); \
mz = rte_memzone_reserve(z_name, size, SOCKET_ID_ANY, \
RTE_MEMZONE_IOVA_CONTIG); \
memset(mz->addr, 0, size); \
virt = mz->addr; \
phys = mz->iova; \
handle = mz; \
if (mz == NULL) { \
virt = NULL; \
phys = 0; \
} else { \
memset(mz->addr, 0, size); \
virt = mz->addr; \
phys = mz->iova; \
} \
} while (0)
#define ENA_MEM_FREE_COHERENT(dmadev, size, virt, phys, handle) \
({ ENA_TOUCH(size); ENA_TOUCH(phys); \
@ -230,9 +235,14 @@ extern uint32_t ena_alloc_cnt;
"ena_alloc_%d", ena_alloc_cnt++); \
mz = rte_memzone_reserve(z_name, size, node, \
RTE_MEMZONE_IOVA_CONTIG); \
memset(mz->addr, 0, size); \
virt = mz->addr; \
phys = mz->iova; \
if (mz == NULL) { \
virt = NULL; \
phys = 0; \
} else { \
memset(mz->addr, 0, size); \
virt = mz->addr; \
phys = mz->iova; \
} \
(void)mem_handle; \
} while (0)