mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: Change parameter of generic_{fls,ffs}() to unsigned int
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 <michal.orzel@amd.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Henry Wang <Henry.Wang@arm.com>
This commit is contained in:
1 parent
05a0136761
commit
c0291d6b5c
1 file changed
+2
-2
@@ -18,7 +18,7 @@
|
||||
* differs in spirit from the above ffz (man ffs).
|
||||
*/
|
||||
|
||||
static inline int generic_ffs(int x)
|
||||
static inline int generic_ffs(unsigned int x)
|
||||
{
|
||||
int r = 1;
|
||||
|
||||
@@ -51,7 +51,7 @@ static inline int generic_ffs(int x)
|
||||
* fls: find last bit set.
|
||||
*/
|
||||
|
||||
static __inline__ int generic_fls(int x)
|
||||
static inline int generic_fls(unsigned int x)
|
||||
{
|
||||
int r = 32;
|
||||
|
||||
|
||||