On 05.09.2023 09:31, Michal Orzel wrote:
> When running with SMMUv3 and UBSAN enabled on arm64, there are a lot of
> warnings printed related to shifting into sign bit in generic_fls()
> as it takes parameter of type int.
>
> Example:
> (XEN) UBSAN: Undefined behaviour in ./include/xen/bitops.h:69:11
> (XEN) left shift of 134217728 by 4 places cannot be represented in type 'int'
>
> It does not make a lot of sense to ask for the last set bit of a negative
> value. We don't have a direct user of this helper and all the wrappers
> pass value of type unsigned {int,long}.
>
> Linux did the same as part of commit:
> 3fc2579e6f16 ("fls: change parameter to unsigned int")
>
> To keep consistency between the helpers, take the opportunity to:
> - replace __inline__ with inline,
> - modify generic_ffs() to take parameter of type unsigned int as well
> (currently no user and the only wrapper generic_ffsl() passes unsigned
> long).
>
> Signed-off-by: Michal Orzel <[email protected]>
Reviewed-by: Jan Beulich <[email protected]>