[dpdk-dev] [PATCH 23/39] net/ixgbe/base: add bound check in LED functions
Hi Ferruh, > -Original Message- > From: Yigit, Ferruh > Sent: Tuesday, September 20, 2016 1:07 AM > To: Wang, Xiao W ; Lu, Wenzhuo > > Cc: dev at dpdk.org > Subject: Re: [dpdk-dev] [PATCH 23/39] net/ixgbe/base: add bound check in LED > functions > > On 8/27/2016 4:48 PM, Xiao Wang wrote: > > Do parameter check to prevent exceptional value being written into > > register. > > > > Signed-off-by: Xiao Wang > > --- > > drivers/net/ixgbe/base/ixgbe_common.c | 15 ++- > > drivers/net/ixgbe/base/ixgbe_x540.c | 6 ++ > > 2 files changed, 20 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/ixgbe/base/ixgbe_common.c > b/drivers/net/ixgbe/base/ixgbe_common.c > > index 1c7263d..3c3272e 100644 > > --- a/drivers/net/ixgbe/base/ixgbe_common.c > > +++ b/drivers/net/ixgbe/base/ixgbe_common.c > > @@ -1133,6 +1133,9 @@ s32 ixgbe_led_on_generic(struct ixgbe_hw *hw, > u32 index) > > > > DEBUGFUNC("ixgbe_led_on_generic"); > > > > + if (index > 3) > > What about using macro for hardcoded value 3. For the base (shared) code update, we'd better to keep DPDK in consistency with kernel driver. > > > + return IXGBE_ERR_PARAM; > > + > > /* To turn on the LED, set mode to ON. */ > > led_reg &= ~IXGBE_LED_MODE_MASK(index); > > led_reg |= IXGBE_LED_ON << IXGBE_LED_MODE_SHIFT(index); > > @@ -1153,6 +1156,9 @@ s32 ixgbe_led_off_generic(struct ixgbe_hw *hw, > u32 index) > > > > DEBUGFUNC("ixgbe_led_off_generic"); > > > > + if (index > 3) > > + return IXGBE_ERR_PARAM; > > + > > /* To turn off the LED, set mode to OFF. */ > > led_reg &= ~IXGBE_LED_MODE_MASK(index); > > led_reg |= IXGBE_LED_OFF << IXGBE_LED_MODE_SHIFT(index); > > @@ -3341,7 +3347,7 @@ s32 prot_autoc_write_generic(struct ixgbe_hw > *hw, u32 reg_val, bool locked) > > **/ > > s32 ixgbe_enable_sec_rx_path_generic(struct ixgbe_hw *hw) > > { > > - int secrxreg; > > + u32 secrxreg; > > This modification seems unrelated with the patch. Will put such minor change into a cleanup patch. > > > >
[dpdk-dev] [PATCH 23/39] net/ixgbe/base: add bound check in LED functions
On 8/27/2016 4:48 PM, Xiao Wang wrote: > Do parameter check to prevent exceptional value being written into > register. > > Signed-off-by: Xiao Wang > --- > drivers/net/ixgbe/base/ixgbe_common.c | 15 ++- > drivers/net/ixgbe/base/ixgbe_x540.c | 6 ++ > 2 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ixgbe/base/ixgbe_common.c > b/drivers/net/ixgbe/base/ixgbe_common.c > index 1c7263d..3c3272e 100644 > --- a/drivers/net/ixgbe/base/ixgbe_common.c > +++ b/drivers/net/ixgbe/base/ixgbe_common.c > @@ -1133,6 +1133,9 @@ s32 ixgbe_led_on_generic(struct ixgbe_hw *hw, u32 index) > > DEBUGFUNC("ixgbe_led_on_generic"); > > + if (index > 3) What about using macro for hardcoded value 3. > + return IXGBE_ERR_PARAM; > + > /* To turn on the LED, set mode to ON. */ > led_reg &= ~IXGBE_LED_MODE_MASK(index); > led_reg |= IXGBE_LED_ON << IXGBE_LED_MODE_SHIFT(index); > @@ -1153,6 +1156,9 @@ s32 ixgbe_led_off_generic(struct ixgbe_hw *hw, u32 > index) > > DEBUGFUNC("ixgbe_led_off_generic"); > > + if (index > 3) > + return IXGBE_ERR_PARAM; > + > /* To turn off the LED, set mode to OFF. */ > led_reg &= ~IXGBE_LED_MODE_MASK(index); > led_reg |= IXGBE_LED_OFF << IXGBE_LED_MODE_SHIFT(index); > @@ -3341,7 +3347,7 @@ s32 prot_autoc_write_generic(struct ixgbe_hw *hw, u32 > reg_val, bool locked) > **/ > s32 ixgbe_enable_sec_rx_path_generic(struct ixgbe_hw *hw) > { > - int secrxreg; > + u32 secrxreg; This modification seems unrelated with the patch. >
[dpdk-dev] [PATCH 23/39] net/ixgbe/base: add bound check in LED functions
Do parameter check to prevent exceptional value being written into register. Signed-off-by: Xiao Wang --- drivers/net/ixgbe/base/ixgbe_common.c | 15 ++- drivers/net/ixgbe/base/ixgbe_x540.c | 6 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c index 1c7263d..3c3272e 100644 --- a/drivers/net/ixgbe/base/ixgbe_common.c +++ b/drivers/net/ixgbe/base/ixgbe_common.c @@ -1133,6 +1133,9 @@ s32 ixgbe_led_on_generic(struct ixgbe_hw *hw, u32 index) DEBUGFUNC("ixgbe_led_on_generic"); + if (index > 3) + return IXGBE_ERR_PARAM; + /* To turn on the LED, set mode to ON. */ led_reg &= ~IXGBE_LED_MODE_MASK(index); led_reg |= IXGBE_LED_ON << IXGBE_LED_MODE_SHIFT(index); @@ -1153,6 +1156,9 @@ s32 ixgbe_led_off_generic(struct ixgbe_hw *hw, u32 index) DEBUGFUNC("ixgbe_led_off_generic"); + if (index > 3) + return IXGBE_ERR_PARAM; + /* To turn off the LED, set mode to OFF. */ led_reg &= ~IXGBE_LED_MODE_MASK(index); led_reg |= IXGBE_LED_OFF << IXGBE_LED_MODE_SHIFT(index); @@ -3341,7 +3347,7 @@ s32 prot_autoc_write_generic(struct ixgbe_hw *hw, u32 reg_val, bool locked) **/ s32 ixgbe_enable_sec_rx_path_generic(struct ixgbe_hw *hw) { - int secrxreg; + u32 secrxreg; DEBUGFUNC("ixgbe_enable_sec_rx_path_generic"); @@ -3388,6 +3394,9 @@ s32 ixgbe_blink_led_start_generic(struct ixgbe_hw *hw, u32 index) DEBUGFUNC("ixgbe_blink_led_start_generic"); + if (index > 3) + return IXGBE_ERR_PARAM; + /* * Link must be up to auto-blink the LEDs; * Force it if link is down. @@ -3433,6 +3442,10 @@ s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index) DEBUGFUNC("ixgbe_blink_led_stop_generic"); + if (index > 3) + return IXGBE_ERR_PARAM; + + ret_val = hw->mac.ops.prot_autoc_read(hw, &locked, &autoc_reg); if (ret_val != IXGBE_SUCCESS) goto out; diff --git a/drivers/net/ixgbe/base/ixgbe_x540.c b/drivers/net/ixgbe/base/ixgbe_x540.c index 31dead0..24e9c93 100644 --- a/drivers/net/ixgbe/base/ixgbe_x540.c +++ b/drivers/net/ixgbe/base/ixgbe_x540.c @@ -982,6 +982,9 @@ s32 ixgbe_blink_led_start_X540(struct ixgbe_hw *hw, u32 index) DEBUGFUNC("ixgbe_blink_led_start_X540"); + if (index > 3) + return IXGBE_ERR_PARAM; + /* * Link should be up in order for the blink bit in the LED control * register to work. Force link and speed in the MAC if link is down. @@ -1016,6 +1019,9 @@ s32 ixgbe_blink_led_stop_X540(struct ixgbe_hw *hw, u32 index) u32 macc_reg; u32 ledctl_reg; + if (index > 3) + return IXGBE_ERR_PARAM; + DEBUGFUNC("ixgbe_blink_led_stop_X540"); /* Restore the LED to its default value. */ -- 1.9.3