> -----Original Message-----
> From: Wu, WenxuanX <wenxuanx...@intel.com>
> Sent: Thursday, June 16, 2022 6:33 PM
> To: Yang, Qiming <qiming.y...@intel.com>; Zhang, Qi Z
> <qi.z.zh...@intel.com>; dev@dpdk.org; tho...@monjalon.net
> Cc: step...@networkplumber.org; Wu, WenxuanX <wenxuanx...@intel.com>;
> sta...@dpdk.org
> Subject: [PATCH] ice/base: fix gcc 12 warning stringop-overflow
> 
> From: Wenxuan Wu <wenxuanx...@intel.com>
> 
> Gcc with -O2 flag, would retrieve the value in one time.
> This patch changed the type of fv_idx in struct ice_recp_grp_entry to align 
> with
> its callers which is also u8 type.
> 
> When u8 idx[5] = a value u16 index[4], gcc12 would give this warning, because
> it is not big enough to store the bytes(bigger than 5 bytes) in one time (-O2
> would do it in this way).
> 
> Fixes: 04b8ec1ea807 ("net/ice/base: add protocol structures and defines")
> Cc: sta...@dpdk.org
> Signed-off-by: Wenxuan Wu <wenxuanx...@intel.com>
> ---
>  drivers/net/ice/base/ice_protocol_type.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ice/base/ice_protocol_type.h
> b/drivers/net/ice/base/ice_protocol_type.h
> index 0e6e5990be..cfe3b62630 100644
> --- a/drivers/net/ice/base/ice_protocol_type.h
> +++ b/drivers/net/ice/base/ice_protocol_type.h
> @@ -421,7 +421,7 @@ struct ice_recp_grp_entry {  #define
> ICE_INVAL_CHAIN_IND 0xFF
>       u16 rid;
>       u8 chain_idx;
> -     u16 fv_idx[ICE_NUM_WORDS_RECIPE];
> +     u8 fv_idx[ICE_NUM_WORDS_RECIPE];

If you change the data type from u16 to u8 for the FV index, you'd better also 
change the type of all the symbols to store the same thing.  e.g. the parameter 
"fv_idx" of ice_find_prot_off.
So, what's exactly the issue that GCC 12 reported? can we fix it from the other 
side without changing a type in the base code?


>       u16 fv_mask[ICE_NUM_WORDS_RECIPE];
>       struct ice_pref_recipe_group r_group;
>  };
> --
> 2.25.1

Reply via email to