Re: kernel/trace/ring_buffer.c:412:29-47: WARNING: casting value returned by memory allocation function to (struct buffer_page *) is useless.
From: Julia Lawall
Date: Sat Aug 01 2026 - 03:05:43 EST
On Fri, 31 Jul 2026, Steven Rostedt wrote:
> On Sat, 01 Aug 2026 08:10:14 +0800
> kernel test robot <lkp@xxxxxxxxx> wrote:
>
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 8ba098e6b6ff0db8edf28528d1552be261af30d4
> > commit: b1e7a590a0133606d3efd41aee38cdeac630b52f ring-buffer: Add helper functions for allocations
> > date: 8 months ago
> > config: openrisc-randconfig-r062-20260801 (https://download.01.org/0day-ci/archive/20260801/202608010824.vc7vATf0-lkp@xxxxxxxxx/config)
> > compiler: or1k-linux-gcc (GCC) 9.5.0
> >
> > 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
> > | Fixes: b1e7a590a013 ("ring-buffer: Add helper functions for allocations")
> > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202608010824.vc7vATf0-lkp@xxxxxxxxx/
> >
> > cocci warnings: (new ones prefixed by >>)
> > >> kernel/trace/ring_buffer.c:412:29-47: WARNING: casting value returned by memory allocation function to (struct buffer_page *) is useless.
> > >> kernel/trace/ring_buffer.c:408:31-57: WARNING: casting value returned by memory allocation function to (struct ring_buffer_per_cpu *) is useless.
>
> No, whatever Coccinelle script that reported this is broken.
>
> The typecast is in a macro. The macro is adding the typecast to make
> sure that what it is being assigned to is of the proper type.
>
> Hence, it is very *useful*!
Thanks for the report. I will remove the warning in the case of a macro
body.
Is there some reason why it is not an inline function?
julia
>
> -- Steve
>
>
> >
> > vim +412 kernel/trace/ring_buffer.c
> >
> > 403
> > 404 /*
> > 405 * For best performance, allocate cpu buffer data cache line sized
> > 406 * and per CPU.
> > 407 */
> > > 408 #define alloc_cpu_buffer(cpu) (struct ring_buffer_per_cpu *) \
> > 409 kzalloc_node(ALIGN(sizeof(struct ring_buffer_per_cpu), \
> > 410 cache_line_size()), GFP_KERNEL, cpu_to_node(cpu));
> > 411
> > > 412 #define alloc_cpu_page(cpu) (struct buffer_page *) \
> > 413 kzalloc_node(ALIGN(sizeof(struct buffer_page), \
> > 414 cache_line_size()), GFP_KERNEL, cpu_to_node(cpu));
> > 415
> >
> > --
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests/wiki
>
>