MS_NOUSER defined as signed int (1<<31), sb->s_flags declared as unsigned long. So (sb->s_flags & MS_NOUSER) works as (sb->s_flags & 0xffffffff80000000). Other potential bugs: git grep -w -e '1\s*<<\s*31' Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxx> Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx> --- include/linux/fs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 6b71bd6..903bf00 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -217,7 +217,7 @@ struct inodes_stat_t { #define MS_NOSEC (1<<28) #define MS_BORN (1<<29) #define MS_ACTIVE (1<<30) -#define MS_NOUSER (1<<31) +#define MS_NOUSER (1u<<31) /* * Superblock flags that can be altered by MS_REMOUNT -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html