[PATCH] common/sfc: replace out of bounds condition with static_assert

Morten Brørup mb at smartsharesystems.com
Fri Jan 19 00:05:13 CET 2024


> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Thursday, 18 January 2024 21.18
> 
> The sfc base code had its own definition of static assertions
> using the out of bound array access hack. Replace it with a
> static_assert like rte_common.h.
> 
> Fixes: f67e4719147d ("net/sfc/base: fix coding style")
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> ---
>  drivers/common/sfc_efx/base/efx.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/common/sfc_efx/base/efx.h
> b/drivers/common/sfc_efx/base/efx.h
> index 3312c2fa8f81..9ce266c43610 100644
> --- a/drivers/common/sfc_efx/base/efx.h
> +++ b/drivers/common/sfc_efx/base/efx.h
> @@ -17,8 +17,8 @@
>  extern "C" {
>  #endif
> 
> -#define	EFX_STATIC_ASSERT(_cond)		\
> -	((void)sizeof (char[(_cond) ? 1 : -1]))
> +#define	EFX_STATIC_ASSERT(_cond) \
> +	do { static_assert((_cond), "assert failed" #_cond); } while (0)

This probably works for the DPDK project.

For other projects using the same file, it might also need "#include <assert.h>" (containing the static_assert convenience macro for C), and possibly your workaround for toolchain issues with missing C11 macro in FreeBSD. Maybe not in this file, but somewhere.

Acked-by: Morten Brørup <mb at smartsharesystems.com>



More information about the dev mailing list