From: Qi Zhang Date: Thu, 29 Aug 2019 02:36:15 +0000 (+0800) Subject: net/ice/base: fix overrun X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=07c417e5fc24ee6cafc066df782a34b7ed62478d;p=dpdk.git net/ice/base: fix overrun Added boundary check for layer_num in function ice_sched_rm_rl_profile, and ice_sched_add_rl_profile. Cc: stable@dpdk.org Tarun Singh Signed-off-by: Paul M Stillwell Jr Signed-off-by: Qi Zhang Acked-by: Xiaolong Ye --- diff --git a/drivers/net/ice/base/ice_sched.c b/drivers/net/ice/base/ice_sched.c index 01c8defaec..1cfc3bc201 100644 --- a/drivers/net/ice/base/ice_sched.c +++ b/drivers/net/ice/base/ice_sched.c @@ -3799,10 +3799,12 @@ ice_sched_add_rl_profile(struct ice_port_info *pi, struct ice_aqc_rl_profile_generic_elem *buf; struct ice_aqc_rl_profile_info *rl_prof_elem; u16 profiles_added = 0, num_profiles = 1; - enum ice_status status = ICE_ERR_PARAM; + enum ice_status status; struct ice_hw *hw; u8 profile_type; + if (layer_num >= ICE_AQC_TOPO_MAX_LEVEL_NUM) + return NULL; switch (rl_type) { case ICE_MIN_BW: profile_type = ICE_AQC_RL_PROFILE_TYPE_CIR; @@ -4049,6 +4051,8 @@ ice_sched_rm_rl_profile(struct ice_port_info *pi, u8 layer_num, u8 profile_type, struct ice_aqc_rl_profile_info *rl_prof_elem; enum ice_status status = ICE_SUCCESS; + if (layer_num >= ICE_AQC_TOPO_MAX_LEVEL_NUM) + return ICE_ERR_PARAM; /* Check the existing list for RL profile */ LIST_FOR_EACH_ENTRY(rl_prof_elem, &pi->rl_prof_list[layer_num], ice_aqc_rl_profile_info, list_entry)