From 2adbccec40663c457a47391b8d704bceb579c2f0 Mon Sep 17 00:00:00 2001 From: Haiyue Wang Date: Tue, 31 Mar 2020 14:50:34 +0800 Subject: [PATCH] net/ice/base: check memory pointer before copying The ice_memdup doesn't check the new allocated memory pointer, it calls the rte_memcpy directly. It should check it. Fixes: 5f0978e96220 ("net/ice/base: add OS specific implementation") Cc: stable@dpdk.org Signed-off-by: Haiyue Wang Reviewed-by: Xiaolong Ye --- drivers/net/ice/base/ice_osdep.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h index 0955f565af..c70f5f8a7e 100644 --- a/drivers/net/ice/base/ice_osdep.h +++ b/drivers/net/ice/base/ice_osdep.h @@ -24,6 +24,8 @@ #include #include +#include "ice_alloc.h" + #include "../ice_logs.h" #ifndef __INTEL_NET_BASE_OSDEP__ @@ -193,7 +195,6 @@ struct ice_virt_mem { #define ice_memset(a, b, c, d) memset((a), (b), (c)) #define ice_memcpy(a, b, c, d) rte_memcpy((a), (b), (c)) -#define ice_memdup(a, b, c, d) rte_memcpy(ice_malloc(a, c), b, c) /* SW spinlock */ struct ice_lock { @@ -225,6 +226,19 @@ ice_destroy_lock(__rte_unused struct ice_lock *sp) struct ice_hw; +static __rte_always_inline void * +ice_memdup(__rte_unused struct ice_hw *hw, const void *src, size_t size, + __rte_unused enum ice_memcpy_type dir) +{ + void *p; + + p = ice_malloc(hw, size); + if (p) + rte_memcpy(p, src, size); + + return p; +} + static inline void * ice_alloc_dma_mem(__rte_unused struct ice_hw *hw, struct ice_dma_mem *mem, u64 size) -- 2.20.1