[PATCH] linux: Fix integer overflow warnings when including <sys/mount.h> [BZ #32708]

Florian Weimer fweimer@redhat.com
Tue Mar 25 18:12:37 GMT 2025


* Collin Funk:

> Using gcc -Wshift-overflow=2 -Wsystem-headers to compile a file
> including <sys/mount.h> will cause a warning since 1 << 31 is undefined
> behavior on platforms where int is 32-bits.
>
> Signed-off-by: Collin Funk <collin.funk1@gmail.com>
> ---
>  sysdeps/unix/sysv/linux/sys/mount.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
> index 7c6d0805d7..b549e75148 100644
> --- a/sysdeps/unix/sysv/linux/sys/mount.h
> +++ b/sysdeps/unix/sysv/linux/sys/mount.h
> @@ -121,7 +121,7 @@ enum
>    MS_ACTIVE = 1 << 30,
>  #define MS_ACTIVE	MS_ACTIVE
>  #undef MS_NOUSER
> -  MS_NOUSER = 1 << 31
> +  MS_NOUSER = 1U << 31
>  #define MS_NOUSER	MS_NOUSER
>  };

This change alters the type of all enum constants from int to unsigned
int.  Should we keep the type of the other constants?  Or use INT_MIN
(expanded) for MS_NOUSER?

Thanks,
Florian



More information about the Libc-alpha mailing list