[tip:timers/vdso 10/18] kernel/sys.c:2878:1: warning: alias and aliasee have different types 'long (unsigned int __attribute__((btf_type_tag("user")))*, unsigned int __attribute__((btf_type_tag("user")))*, void __attribute__((btf_type_tag("user")))*)' (aka 'long (unsigned int...

From: kernel test robot

Date: Fri May 29 2026 - 23:36:38 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso
head: 034779fb06aba5bc45faf366922bd77e4d36543a
commit: 7158fc54b2c6f124eec0d7cd13bff69da0172e59 [10/18] vdso: Remove struct getcpu_cache
config: loongarch-randconfig-r073-20260530 (https://download.01.org/0day-ci/archive/20260530/202605301150.1I5lIDzd-lkp@xxxxxxxxx/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 9409c07de6378507397ecdb6f05f628f58110112)
smatch: v0.5.0-9185-gbcc58b9c
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260530/202605301150.1I5lIDzd-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605301150.1I5lIDzd-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

kernel/sys.c:1793:1: warning: alias and aliasee have different types 'long (unsigned int, struct rlimit __attribute__((btf_type_tag("user")))*)' (aka 'long (unsigned int, struct rlimit *)') and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned int)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned int)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((struct rlimit __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((struct rlimit __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long, long)') [-Wattribute-alias]
1793 | SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim)
| ^
include/linux/syscalls.h:226:36: note: expanded from macro 'SYSCALL_DEFINE2'
226 | #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:1793:1: note: aliasee is declared here
include/linux/syscalls.h:226:36: note: expanded from macro 'SYSCALL_DEFINE2'
226 | #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:157:1: note: expanded from here
157 | __se_sys_setrlimit
| ^
kernel/sys.c:1933:1: warning: alias and aliasee have different types 'long (int, struct rusage __attribute__((btf_type_tag("user")))*)' (aka 'long (int, struct rusage *)') and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((int)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((int)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((struct rusage __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((struct rusage __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long, long)') [-Wattribute-alias]
1933 | SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
| ^
include/linux/syscalls.h:226:36: note: expanded from macro 'SYSCALL_DEFINE2'
226 | #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:1933:1: note: aliasee is declared here
include/linux/syscalls.h:226:36: note: expanded from macro 'SYSCALL_DEFINE2'
226 | #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:21:1: note: expanded from here
21 | __se_sys_getrusage
| ^
kernel/sys.c:1959:1: warning: alias and aliasee have different types 'long (int)' and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((int)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((int)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long)') [-Wattribute-alias]
1959 | SYSCALL_DEFINE1(umask, int, mask)
| ^
include/linux/syscalls.h:225:36: note: expanded from macro 'SYSCALL_DEFINE1'
225 | #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:1959:1: note: aliasee is declared here
include/linux/syscalls.h:225:36: note: expanded from macro 'SYSCALL_DEFINE1'
225 | #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:50:1: note: expanded from here
50 | __se_sys_umask
| ^
kernel/sys.c:2517:1: warning: alias and aliasee have different types 'long (int, unsigned long, unsigned long, unsigned long, unsigned long)' and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((int)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((int)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned long)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long, long, long, long, long)') [-Wattribute-alias]
2517 | SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
| ^
include/linux/syscalls.h:229:36: note: expanded from macro 'SYSCALL_DEFINE5'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:2517:1: note: aliasee is declared here
include/linux/syscalls.h:229:36: note: expanded from macro 'SYSCALL_DEFINE5'
229 | #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:113:1: note: expanded from here
113 | __se_sys_prctl
| ^
>> kernel/sys.c:2878:1: warning: alias and aliasee have different types 'long (unsigned int __attribute__((btf_type_tag("user")))*, unsigned int __attribute__((btf_type_tag("user")))*, void __attribute__((btf_type_tag("user")))*)' (aka 'long (unsigned int *, unsigned int *, void *)') and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned int __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned int __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((unsigned int __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((unsigned int __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)), typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((void __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((void __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long, long, long)') [-Wattribute-alias]
2878 | SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep, void __user *, unused)
| ^
include/linux/syscalls.h:227:36: note: expanded from macro 'SYSCALL_DEFINE3'
227 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:2878:1: note: aliasee is declared here
include/linux/syscalls.h:227:36: note: expanded from macro 'SYSCALL_DEFINE3'
227 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:31:1: note: expanded from here
31 | __se_sys_getcpu
| ^
kernel/sys.c:2957:1: warning: alias and aliasee have different types 'long (struct sysinfo __attribute__((btf_type_tag("user")))*)' (aka 'long (struct sysinfo *)') and 'long (typeof (__builtin_choose_expr((__builtin_types_compatible_p(typeof ((struct sysinfo __attribute__((btf_type_tag("user")))*)0), typeof (0LL)) || __builtin_types_compatible_p(typeof ((struct sysinfo __attribute__((btf_type_tag("user")))*)0), typeof (0ULL))), 0LL, 0L)))' (aka 'long (long)') [-Wattribute-alias]
2957 | SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
| ^
include/linux/syscalls.h:225:36: note: expanded from macro 'SYSCALL_DEFINE1'
225 | #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:251:18: note: expanded from macro '__SYSCALL_DEFINEx'
251 | __attribute__((alias(__stringify(__se_sys##name)))); \
| ^
kernel/sys.c:2957:1: note: aliasee is declared here
include/linux/syscalls.h:225:36: note: expanded from macro 'SYSCALL_DEFINE1'
225 | #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
| ^
include/linux/syscalls.h:236:2: note: expanded from macro 'SYSCALL_DEFINEx'
236 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^
include/linux/syscalls.h:255:18: note: expanded from macro '__SYSCALL_DEFINEx'
255 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^
<scratch space>:170:1: note: expanded from here
170 | __se_sys_sysinfo
| ^
27 warnings generated.


vim +2878 kernel/sys.c

2877
> 2878 SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep, void __user *, unused)
2879 {
2880 int err = 0;
2881 int cpu = raw_smp_processor_id();
2882
2883 if (cpup)
2884 err |= put_user(cpu, cpup);
2885 if (nodep)
2886 err |= put_user(cpu_to_node(cpu), nodep);
2887 return err ? -EFAULT : 0;
2888 }
2889

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki