Re: + minmax-sanity-check-constant-bounds-when-clamping-checkpatch-fixes.patch added to mm-nonmm-unstable branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 17, 2022 at 06:17:59PM -0700, Andrew Morton wrote:

...

> -#define __clamp(val, lo, hi)							\
> +#define __clamp(val, lo, hi)	\
>  	__cmp(__cmp(val, lo, >), hi, <)
>  
> -#define __clamp_once(val, lo, hi, unique_val, unique_lo, unique_hi) ({		\
> -		typeof(val) unique_val = (val);					\
> -		typeof(lo) unique_lo = (lo);					\
> -		typeof(hi) unique_hi = (hi);					\
> +#define __clamp_once(val, lo, hi, unique_val, unique_lo, unique_hi) ({	\
> +		typeof(val) unique_val = (val);				\
> +		typeof(lo) unique_lo = (lo);				\
> +		typeof(hi) unique_hi = (hi);				\
>  		__clamp(unique_val, unique_lo, unique_hi); })
>  
> -#define __clamp_input_check(lo, hi)						\
> -        (BUILD_BUG_ON_ZERO(__builtin_choose_expr(				\
> +#define __clamp_input_check(lo, hi)					\
> +        (BUILD_BUG_ON_ZERO(__builtin_choose_expr(			\
>                  __is_constexpr((lo) > (hi)), (lo) > (hi), false)))

These are good...

> -#define __careful_clamp(val, lo, hi) ({						\
> -	__clamp_input_check(lo, hi) + 						\
> -	__builtin_choose_expr(__typecheck(val, lo) && __typecheck(val, hi) &&	\
> -			      __typecheck(hi, lo) && __is_constexpr(val) && 	\
> -			      __is_constexpr(lo) && __is_constexpr(hi),		\
> -		__clamp(val, lo, hi),						\
> -		__clamp_once(val, lo, hi, __UNIQUE_ID(__val),			\
> +#define __careful_clamp(val, lo, hi) ({					\
> +	__clamp_input_check(lo, hi) +					\
> +	__builtin_choose_expr(__typecheck(val, lo) && __typecheck(val, hi) &&\
> +			      __typecheck(hi, lo) && __is_constexpr(val) &&\
> +			      __is_constexpr(lo) && __is_constexpr(hi),	\
> +		__clamp(val, lo, hi),					\
> +		__clamp_once(val, lo, hi, __UNIQUE_ID(__val),		\
>  			     __UNIQUE_ID(__lo), __UNIQUE_ID(__hi))); })

...but this one becomes less readable. I think checkpatch is always a
recommendation than requirement. I would leave at least the last as is, but
formally I think the entire patch is a churn to satisfy controversial
recommendation.

-- 
With Best Regards,
Andy Shevchenko





[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux