Subject: Re: linux-next: build failure after merge of the vfs-brauner tree

From: Bagas Sanjaya <[email-masked]>
Date: Thu, 11 Sep 2025 19:13:25 +0700

On Wed, Sep 10, 2025 at 10:49:44AM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> On Mon, 8 Sep 2025 12:02:29 +1000 Stephen Rothwell <[email-masked]> wrote:
> >
> > On Thu, 4 Sep 2025 11:33:34 +1000 Stephen Rothwell <[email-masked]> wrote:
> > > 
> > > After merging the vfs-brauner tree, today's linux-next build (x86_64
> > > allmodconfig) failed like this:
> > > 
> > > In file included from include/rv/ltl_monitor.h:11,
> > >                  from kernel/trace/rv/monitors/sleep/sleep.c:23:
> > > include/rv/ltl_monitor.h: In function 'ltl_monitor_init':
> > > include/rv/ltl_monitor.h:75:51: error: passing argument 1 of 'check_trace_callback_type_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/rv/instrumentation.h:18:48: note: in definition of macro 'rv_attach_trace_probe'
> > >    18 |                 check_trace_callback_type_##tp(rv_handler);                             \
> > >       |                                                ^~~~~~~~~~
> > > In file included from kernel/trace/rv/monitors/sleep/sleep.c:3:
> > > include/linux/tracepoint.h:260:49: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   260 |         check_trace_callback_type_##name(void (*cb)(data_proto))        \
> > >       |                                          ~~~~~~~^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > In file included from include/asm-generic/bug.h:7,
> > >                  from arch/x86/include/asm/bug.h:103,
> > >                  from arch/x86/include/asm/alternative.h:9,
> > >                  from arch/x86/include/asm/barrier.h:5,
> > >                  from include/asm-generic/bitops/generic-non-atomic.h:7,
> > >                  from include/linux/bitops.h:28,
> > >                  from include/linux/kernel.h:23,
> > >                  from include/linux/interrupt.h:6,
> > >                  from include/linux/trace_recursion.h:5,
> > >                  from include/linux/ftrace.h:10,
> > >                  from kernel/trace/rv/monitors/sleep/sleep.c:2:
> > > include/rv/ltl_monitor.h:75:51: error: passing argument 1 of 'register_trace_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/linux/once_lite.h:28:41: note: in definition of macro 'DO_ONCE_LITE_IF'
> > >    28 |                 bool __ret_do_once = !!(condition);                     \
> > >       |                                         ^~~~~~~~~
> > > include/rv/instrumentation.h:19:17: note: in expansion of macro 'WARN_ONCE'
> > >    19 |                 WARN_ONCE(register_trace_##tp(rv_handler, NULL),                        \
> > >       |                 ^~~~~~~~~
> > > include/rv/ltl_monitor.h:75:9: note: in expansion of macro 'rv_attach_trace_probe'
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |         ^~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:241:38: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   241 |         register_trace_##name(void (*probe)(data_proto), void *data)    \
> > >       |                               ~~~~~~~^~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > include/rv/ltl_monitor.h: In function 'ltl_monitor_destroy':
> > > include/rv/ltl_monitor.h:92:51: error: passing argument 1 of 'unregister_trace_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    92 |         rv_detach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/rv/instrumentation.h:28:39: note: in definition of macro 'rv_detach_trace_probe'
> > >    28 |                 unregister_trace_##tp(rv_handler, NULL);                                \
> > >       |                                       ^~~~~~~~~~
> > > include/linux/tracepoint.h:254:40: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   254 |         unregister_trace_##name(void (*probe)(data_proto), void *data)  \
> > >       |                                 ~~~~~~~^~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > In file included from include/rv/ltl_monitor.h:11,
> > >                  from kernel/trace/rv/monitors/pagefault/pagefault.c:19:
> > > include/rv/ltl_monitor.h: In function 'ltl_monitor_init':
> > > include/rv/ltl_monitor.h:75:51: error: passing argument 1 of 'check_trace_callback_type_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/rv/instrumentation.h:18:48: note: in definition of macro 'rv_attach_trace_probe'
> > >    18 |                 check_trace_callback_type_##tp(rv_handler);                             \
> > >       |                                                ^~~~~~~~~~
> > > In file included from kernel/trace/rv/monitors/pagefault/pagefault.c:9:
> > > include/linux/tracepoint.h:260:49: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   260 |         check_trace_callback_type_##name(void (*cb)(data_proto))        \
> > >       |                                          ~~~~~~~^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > In file included from include/asm-generic/bug.h:7,
> > >                  from arch/x86/include/asm/bug.h:103,
> > >                  from arch/x86/include/asm/alternative.h:9,
> > >                  from arch/x86/include/asm/barrier.h:5,
> > >                  from include/asm-generic/bitops/generic-non-atomic.h:7,
> > >                  from include/linux/bitops.h:28,
> > >                  from include/linux/kernel.h:23,
> > >                  from include/linux/interrupt.h:6,
> > >                  from include/linux/trace_recursion.h:5,
> > >                  from include/linux/ftrace.h:10,
> > >                  from kernel/trace/rv/monitors/pagefault/pagefault.c:2:
> > > include/rv/ltl_monitor.h:75:51: error: passing argument 1 of 'register_trace_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/linux/once_lite.h:28:41: note: in definition of macro 'DO_ONCE_LITE_IF'
> > >    28 |                 bool __ret_do_once = !!(condition);                     \
> > >       |                                         ^~~~~~~~~
> > > include/rv/instrumentation.h:19:17: note: in expansion of macro 'WARN_ONCE'
> > >    19 |                 WARN_ONCE(register_trace_##tp(rv_handler, NULL),                        \
> > >       |                 ^~~~~~~~~
> > > include/rv/ltl_monitor.h:75:9: note: in expansion of macro 'rv_attach_trace_probe'
> > >    75 |         rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |         ^~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:241:38: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   241 |         register_trace_##name(void (*probe)(data_proto), void *data)    \
> > >       |                               ~~~~~~~^~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > include/rv/ltl_monitor.h: In function 'ltl_monitor_destroy':
> > > include/rv/ltl_monitor.h:92:51: error: passing argument 1 of 'unregister_trace_task_newtask' from incompatible pointer type [-Wincompatible-pointer-types]
> > >    92 |         rv_detach_trace_probe(name, task_newtask, handle_task_newtask);
> > >       |                                                   ^~~~~~~~~~~~~~~~~~~
> > >       |                                                   |
> > >       |                                                   void (*)(void *, struct task_struct *, long unsigned int)
> > > include/rv/instrumentation.h:28:39: note: in definition of macro 'rv_detach_trace_probe'
> > >    28 |                 unregister_trace_##tp(rv_handler, NULL);                                \
> > >       |                                       ^~~~~~~~~~
> > > include/linux/tracepoint.h:254:40: note: expected 'void (*)(void *, struct task_struct *, u64)' {aka 'void (*)(void *, struct task_struct *, long long unsigned int)'} but argument is of type 'void (*)(void *, struct task_struct *, long unsigned int)'
> > >   254 |         unregister_trace_##name(void (*probe)(data_proto), void *data)  \
> > >       |                                 ~~~~~~~^~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:270:9: note: in expansion of macro '__DECLARE_TRACE_COMMON'
> > >   270 |         __DECLARE_TRACE_COMMON(name, PARAMS(proto), PARAMS(args), PARAMS(data_proto)) \
> > >       |         ^~~~~~~~~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:481:9: note: in expansion of macro '__DECLARE_TRACE'
> > >   481 |         __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),              \
> > >       |         ^~~~~~~~~~~~~~~
> > > include/linux/tracepoint.h:619:9: note: in expansion of macro 'DECLARE_TRACE_EVENT'
> > >   619 |         DECLARE_TRACE_EVENT(name, PARAMS(proto), PARAMS(args))
> > >       |         ^~~~~~~~~~~~~~~~~~~
> > > include/trace/events/task.h:9:1: note: in expansion of macro 'TRACE_EVENT'
> > >     9 | TRACE_EVENT(task_newtask,
> > >       | ^~~~~~~~~~~
> > > 
> > > Presumably caused by commit
> > > 
> > >   edd3cb05c00a ("copy_process: pass clone_flags as u64 across calltree")
> > > 
> > > I have used the vfs-brauner tree from next-20250829 for today.  
> > 
> > I am still seeing this failure.
> 
> From today, I have instead just reverted these three commits:
> 
>   c6ac444ff20c ("nios2: implement architecture-specific portion of sys_clone3")
>   bbc46b23af5b ("arch: copy_thread: pass clone_flags as u64")
>   edd3cb05c00a ("copy_process: pass clone_flags as u64 across calltree")

I can't help but wondering what Linus would have to react when these commits
made their way to PR to him as-is without any fix...

-- 
An old man doll... just what I always wanted! - Clara