* Re: [PATCH 1/7] tracing: Replace syscall RCU pointer assignment with READ/WRITE_ONCE()
[not found] <20250805193234.745705874@kernel.org>
@ 2025-08-06 22:05 ` kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-08-06 22:05 UTC (permalink / raw)
To: Steven Rostedt, linux-kernel, linux-trace-kernel
Cc: oe-kbuild-all, Masami Hiramatsu, Mark Rutland, Mathieu Desnoyers,
Andrew Morton, Linux Memory Management List, Peter Zijlstra,
Namhyung Kim, Takaya Saeki, Tom Zanussi, Thomas Gleixner,
Ian Rogers, aahringo, Douglas Raillard, Paul E. McKenney
Hi Steven,
kernel test robot noticed the following build warnings:
[auto build test WARNING on trace/for-next]
[also build test WARNING on linus/master v6.16 next-20250806]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Steven-Rostedt/tracing-Replace-syscall-RCU-pointer-assignment-with-READ-WRITE_ONCE/20250806-122312
base: https://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace for-next
patch link: https://lore.kernel.org/r/20250805193234.745705874%40kernel.org
patch subject: [PATCH 1/7] tracing: Replace syscall RCU pointer assignment with READ/WRITE_ONCE()
config: x86_64-randconfig-123-20250806 (https://download.01.org/0day-ci/archive/20250807/202508070546.KmEoxWkg-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250807/202508070546.KmEoxWkg-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508070546.KmEoxWkg-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/trace/trace_syscalls.c:313:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct trace_event_file *trace_file @@ got struct trace_event_file [noderef] __rcu * @@
kernel/trace/trace_syscalls.c:313:20: sparse: expected struct trace_event_file *trace_file
kernel/trace/trace_syscalls.c:313:20: sparse: got struct trace_event_file [noderef] __rcu *
kernel/trace/trace_syscalls.c:358:20: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct trace_event_file *trace_file @@ got struct trace_event_file [noderef] __rcu * @@
kernel/trace/trace_syscalls.c:358:20: sparse: expected struct trace_event_file *trace_file
kernel/trace/trace_syscalls.c:358:20: sparse: got struct trace_event_file [noderef] __rcu *
>> kernel/trace/trace_syscalls.c:394:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct trace_event_file [noderef] __rcu *volatile @@ got struct trace_event_file *file @@
kernel/trace/trace_syscalls.c:394:17: sparse: expected struct trace_event_file [noderef] __rcu *volatile
kernel/trace/trace_syscalls.c:394:17: sparse: got struct trace_event_file *file
kernel/trace/trace_syscalls.c:432:17: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct trace_event_file [noderef] __rcu *volatile @@ got struct trace_event_file *file @@
kernel/trace/trace_syscalls.c:432:17: sparse: expected struct trace_event_file [noderef] __rcu *volatile
kernel/trace/trace_syscalls.c:432:17: sparse: got struct trace_event_file *file
vim +313 kernel/trace/trace_syscalls.c
290
291 static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
292 {
293 struct trace_array *tr = data;
294 struct trace_event_file *trace_file;
295 struct syscall_trace_enter *entry;
296 struct syscall_metadata *sys_data;
297 struct trace_event_buffer fbuffer;
298 unsigned long args[6];
299 int syscall_nr;
300 int size;
301
302 /*
303 * Syscall probe called with preemption enabled, but the ring
304 * buffer and per-cpu data require preemption to be disabled.
305 */
306 might_fault();
307 guard(preempt_notrace)();
308
309 syscall_nr = trace_get_syscall_nr(current, regs);
310 if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
311 return;
312
> 313 trace_file = READ_ONCE(tr->enter_syscall_files[syscall_nr]);
314 if (!trace_file)
315 return;
316
317 if (trace_trigger_soft_disabled(trace_file))
318 return;
319
320 sys_data = syscall_nr_to_meta(syscall_nr);
321 if (!sys_data)
322 return;
323
324 size = sizeof(*entry) + sizeof(unsigned long) * sys_data->nb_args;
325
326 entry = trace_event_buffer_reserve(&fbuffer, trace_file, size);
327 if (!entry)
328 return;
329
330 entry = ring_buffer_event_data(fbuffer.event);
331 entry->nr = syscall_nr;
332 syscall_get_arguments(current, regs, args);
333 memcpy(entry->args, args, sizeof(unsigned long) * sys_data->nb_args);
334
335 trace_event_buffer_commit(&fbuffer);
336 }
337
338 static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
339 {
340 struct trace_array *tr = data;
341 struct trace_event_file *trace_file;
342 struct syscall_trace_exit *entry;
343 struct syscall_metadata *sys_data;
344 struct trace_event_buffer fbuffer;
345 int syscall_nr;
346
347 /*
348 * Syscall probe called with preemption enabled, but the ring
349 * buffer and per-cpu data require preemption to be disabled.
350 */
351 might_fault();
352 guard(preempt_notrace)();
353
354 syscall_nr = trace_get_syscall_nr(current, regs);
355 if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
356 return;
357
358 trace_file = READ_ONCE(tr->exit_syscall_files[syscall_nr]);
359 if (!trace_file)
360 return;
361
362 if (trace_trigger_soft_disabled(trace_file))
363 return;
364
365 sys_data = syscall_nr_to_meta(syscall_nr);
366 if (!sys_data)
367 return;
368
369 entry = trace_event_buffer_reserve(&fbuffer, trace_file, sizeof(*entry));
370 if (!entry)
371 return;
372
373 entry = ring_buffer_event_data(fbuffer.event);
374 entry->nr = syscall_nr;
375 entry->ret = syscall_get_return_value(current, regs);
376
377 trace_event_buffer_commit(&fbuffer);
378 }
379
380 static int reg_event_syscall_enter(struct trace_event_file *file,
381 struct trace_event_call *call)
382 {
383 struct trace_array *tr = file->tr;
384 int ret = 0;
385 int num;
386
387 num = ((struct syscall_metadata *)call->data)->syscall_nr;
388 if (WARN_ON_ONCE(num < 0 || num >= NR_syscalls))
389 return -ENOSYS;
390 mutex_lock(&syscall_trace_lock);
391 if (!tr->sys_refcount_enter)
392 ret = register_trace_sys_enter(ftrace_syscall_enter, tr);
393 if (!ret) {
> 394 WRITE_ONCE(tr->enter_syscall_files[num], file);
395 tr->sys_refcount_enter++;
396 }
397 mutex_unlock(&syscall_trace_lock);
398 return ret;
399 }
400
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-08-06 22:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250805193234.745705874@kernel.org>
2025-08-06 22:05 ` [PATCH 1/7] tracing: Replace syscall RCU pointer assignment with READ/WRITE_ONCE() kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).