Re: linux-next: build failure after merge of the tip tree

Stephen Rothwell
2025-10-31T01:38:35Z

[-- Attachment #1: Type: text/plain, Size: 21864 bytes --]

Hi all,

On Fri, 31 Oct 2025 12:18:12 +1100 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> On Fri, 31 Oct 2025 12:02:43 +1100 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> >
> > After merging the tip tree, today's linux-next build (arm64 defconfig)
> > failed like this:
> >
> > arch/arm64/kernel/entry-common.c: In function 'arm64_exit_to_user_mode':
> > arch/arm64/kernel/entry-common.c:103:9: error: implicit declaration of function 'exit_to_user_mode_prepare'; did you mean 'arch_exit_to_user_mode_prepare'? [-Wimplicit-function-declaration]
> > 103 | exit_to_user_mode_prepare(regs);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~
> > | arch_exit_to_user_mode_prepare
> > In file included from arch/arm64/include/asm/current.h:5,
> > from include/linux/sched.h:12,
> > from include/linux/context_tracking.h:5,
> > from include/linux/irq-entry-common.h:5,
> > from kernel/entry/common.c:3:
> > kernel/entry/common.c: In function 'exit_to_user_mode_loop':
> > kernel/entry/common.c:77:29: error: implicit declaration of function 'rseq_exit_to_user_mode_restart'; did you mean 'arch_exit_to_user_mode_prepare'? [-Wimplicit-function-declaration]
> > 77 | if (likely(!rseq_exit_to_user_mode_restart(regs, ti_work)))
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > include/linux/compiler.h:76:45: note: in definition of macro 'likely'
> > 76 | # define likely(x) __builtin_expect(!!(x), 1)
> > | ^
> >
> > Caused by commit
> >
> > d58930640310 ("entry: Split up exit_to_user_mode_prepare()")
> >
> > and maybe following ones.
> >
> > I have reverted these commits for today:
> >
> > 69c8e3d16105 ("rseq: Switch to TIF_RSEQ if supported")
> > 1b3dd1c538a8 ("rseq: Split up rseq_exit_to_user_mode()")
> > d58930640310 ("entry: Split up exit_to_user_mode_prepare()")
>
> I also had to revert
>
> 84eeeb002035 ("rseq: Switch to fast path processing on exit to user")

And then the sparc64 defconfig build failed like this:

In file included from io_uring/io_uring.h:6,
from io_uring/notif.c:8:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/notif.c:8:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/notif.c:8:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/notif.c:8:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/notif.o] Error 1
make[4]: *** Waiting for unfinished jobs....
In file included from io_uring/io_uring.h:6,
from io_uring/opdef.c:12:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/opdef.c:12:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/opdef.c:12:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/opdef.c:12:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/opdef.o] Error 1
In file included from io_uring/io_uring.h:6,
from io_uring/filetable.c:12:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/filetable.c:12:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/filetable.c:12:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/filetable.c:12:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/filetable.o] Error 1
arch/sparc/vdso/vclock_gettime.c:274:1: warning: no previous prototype for '__vdso_clock_gettime' [-Wmissing-prototypes]
274 | __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vclock_gettime.c:302:1: warning: no previous prototype for '__vdso_clock_gettime_stick' [-Wmissing-prototypes]
302 | __vdso_clock_gettime_stick(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vclock_gettime.c:327:1: warning: no previous prototype for '__vdso_gettimeofday' [-Wmissing-prototypes]
327 | __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vclock_gettime.c:363:1: warning: no previous prototype for '__vdso_gettimeofday_stick' [-Wmissing-prototypes]
363 | __vdso_gettimeofday_stick(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from io_uring/io_uring.h:6,
from io_uring/tctx.c:12:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/tctx.c:12:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/tctx.c:12:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/tctx.c:12:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/tctx.o] Error 1
In file included from io_uring/io_uring.h:6,
from io_uring/kbuf.c:15:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/kbuf.c:15:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/kbuf.c:15:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/kbuf.c:15:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/kbuf.o] Error 1
In file included from io_uring/io_uring.h:6,
from io_uring/rw.c:19:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/rw.c:19:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/rw.c:19:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/rw.c:19:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/rw.o] Error 1
In file included from io_uring/io_uring.h:6,
from io_uring/rsrc.c:17:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/rsrc.c:17:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/rsrc.c:17:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/rsrc.c:17:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/rsrc.o] Error 1
In file included from arch/sparc/vdso/vdso32/vclock_gettime.c:22:
arch/sparc/vdso/vdso32/../vclock_gettime.c:274:1: warning: no previous prototype for '__vdso_clock_gettime' [-Wmissing-prototypes]
274 | __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vdso32/../vclock_gettime.c:302:1: warning: no previous prototype for '__vdso_clock_gettime_stick' [-Wmissing-prototypes]
302 | __vdso_clock_gettime_stick(clockid_t clock, struct __kernel_old_timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vdso32/../vclock_gettime.c:327:1: warning: no previous prototype for '__vdso_gettimeofday' [-Wmissing-prototypes]
327 | __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~
arch/sparc/vdso/vdso32/../vclock_gettime.c:363:1: warning: no previous prototype for '__vdso_gettimeofday_stick' [-Wmissing-prototypes]
363 | __vdso_gettimeofday_stick(struct __kernel_old_timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from io_uring/io_uring.h:6,
from io_uring/io_uring.c:83:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/io_uring.c:83:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from io_uring/io_uring.h:6,
from io_uring/io_uring.c:83:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from io_uring/io_uring.h:6,
from io_uring/io_uring.c:83:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:287: io_uring/io_uring.o] Error 1
make[3]: *** [scripts/Makefile.build:556: io_uring] Error 2
make[3]: *** Waiting for unfinished jobs....
In file included from arch/sparc/kernel/signal_64.c:18:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from arch/sparc/kernel/signal_64.c:18:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from arch/sparc/kernel/signal_64.c:18:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from arch/sparc/kernel/signal_64.c:18:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[5]: *** [scripts/Makefile.build:287: arch/sparc/kernel/signal_64.o] Error 1
make[5]: *** Waiting for unfinished jobs....
make[4]: *** [scripts/Makefile.build:556: arch/sparc/kernel] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [scripts/Makefile.build:556: arch/sparc] Error 2
kernel/fork.c: In function '__do_sys_clone3':
kernel/fork.c:2898:2: warning: #warning clone3() entry point is missing, please fix [-Wcpp]
2898 | #warning clone3() entry point is missing, please fix
| ^~~~~~~
kernel/fork.c:2898:2: warning: #warning clone3() entry point is missing, please fix [-Wcpp]
2898 | #warning clone3() entry point is missing, please fix
| ^~~~~~~
In file included from kernel/task_work.c:5:
include/linux/resume_user_mode.h: In function 'resume_user_mode_work':
include/linux/resume_user_mode.h:62:35: error: passing argument 1 of 'rseq_handle_notify_resume' from incompatible pointer type [-Werror=incompatible-pointer-types]
62 | rseq_handle_notify_resume(regs);
| ^~~~
| |
| struct pt_regs *
In file included from include/linux/resume_user_mode.h:9,
from kernel/task_work.c:5:
include/linux/rseq.h:155:62: note: expected 'struct ksignal *' but argument is of type 'struct pt_regs *'
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ~~~~~~~~~~~~~~~~^~~~
In file included from kernel/task_work.c:5:
include/linux/resume_user_mode.h:62:9: error: too few arguments to function 'rseq_handle_notify_resume'
62 | rseq_handle_notify_resume(regs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/resume_user_mode.h:9,
from kernel/task_work.c:5:
include/linux/rseq.h:155:20: note: declared here
155 | static inline void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { }
| ^~~~~~~~~~~~~~~~~~~~~~~~~

I will come back to this later today.

--
Cheers,
Stephen Rothwell

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]