2024-05-15 02:48:28

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning after merge of the ftrace tree

Hi all,

After merging the ftrace tree, today's linux-next build (powerpc
ppc64_defconfig) produced this warning:

In file included from arch/powerpc/include/asm/page.h:332,
from arch/powerpc/include/asm/mmu.h:144,
from arch/powerpc/include/asm/paca.h:18,
from arch/powerpc/include/asm/current.h:13,
from include/linux/thread_info.h:23,
from include/asm-generic/preempt.h:5,
from ./arch/powerpc/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:79,
from include/linux/alloc_tag.h:11,
from include/linux/percpu.h:5,
from include/linux/context_tracking_state.h:5,
from include/linux/hardirq.h:5,
from include/linux/interrupt.h:11,
from include/linux/trace_recursion.h:5,
from kernel/trace/ring_buffer.c:7:
kernel/trace/ring_buffer.c: In function '__rb_map_vma':
kernel/trace/ring_buffer.c:6286:72: warning: passing argument 1 of 'virt_to_pfn' makes pointer from integer without a cast [-Wint-conversion]
6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
| ~~~~~~~~~~~~~~~~~~~~~~^~~
| |
| long unsigned int
include/asm-generic/memory_model.h:37:45: note: in definition of macro '__pfn_to_page'
37 | #define __pfn_to_page(pfn) (vmemmap + (pfn))
| ^~~
kernel/trace/ring_buffer.c:6286:37: note: in expansion of macro 'virt_to_page'
6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
| ^~~~~~~~~~~~
arch/powerpc/include/asm/page.h:228:53: note: expected 'const void *' but argument is of type 'long unsigned int'
228 | static inline unsigned long virt_to_pfn(const void *kaddr)
| ~~~~~~~~~~~~^~~~~

Introduced by commit

117c39200d9d ("ring-buffer: Introducing ring-buffer mapping functions")

My arm multi_v7_defconfig build produced a similar warning.

Is this really intended for v6.10? It seems a bit late.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2024-05-15 04:49:45

by Steven Rostedt

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the ftrace tree

On Wed, 15 May 2024 12:48:08 +1000
Stephen Rothwell <[email protected]> wrote:

> Hi all,
>
> After merging the ftrace tree, today's linux-next build (powerpc
> ppc64_defconfig) produced this warning:

Interesting, as I didn't get reports from it via zero-day bot.

>
> In file included from arch/powerpc/include/asm/page.h:332,
> from arch/powerpc/include/asm/mmu.h:144,
> from arch/powerpc/include/asm/paca.h:18,
> from arch/powerpc/include/asm/current.h:13,
> from include/linux/thread_info.h:23,
> from include/asm-generic/preempt.h:5,
> from ./arch/powerpc/include/generated/asm/preempt.h:1,
> from include/linux/preempt.h:79,
> from include/linux/alloc_tag.h:11,
> from include/linux/percpu.h:5,
> from include/linux/context_tracking_state.h:5,
> from include/linux/hardirq.h:5,
> from include/linux/interrupt.h:11,
> from include/linux/trace_recursion.h:5,
> from kernel/trace/ring_buffer.c:7:
> kernel/trace/ring_buffer.c: In function '__rb_map_vma':
> kernel/trace/ring_buffer.c:6286:72: warning: passing argument 1 of 'virt_to_pfn' makes pointer from integer without a cast [-Wint-conversion]
> 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> | ~~~~~~~~~~~~~~~~~~~~~~^~~
> | |
> | long unsigned int
> include/asm-generic/memory_model.h:37:45: note: in definition of macro '__pfn_to_page'
> 37 | #define __pfn_to_page(pfn) (vmemmap + (pfn))
> | ^~~
> kernel/trace/ring_buffer.c:6286:37: note: in expansion of macro 'virt_to_page'
> 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> | ^~~~~~~~~~~~
> arch/powerpc/include/asm/page.h:228:53: note: expected 'const void *' but argument is of type 'long unsigned int'
> 228 | static inline unsigned long virt_to_pfn(const void *kaddr)
> | ~~~~~~~~~~~~^~~~~
>
> Introduced by commit
>
> 117c39200d9d ("ring-buffer: Introducing ring-buffer mapping functions")
>
> My arm multi_v7_defconfig build produced a similar warning.
>
> Is this really intended for v6.10? It seems a bit late.
>

Well, I submitted this for the v6.9 merge window, and Linus had issues
with it. So we've been tweaking it for the entire time and it was ready
a bit earlier, but due to my vacation and traveling I missed pushing it
to next. :-p

Most the code has been well tested, but because it is late, I kept it
as a separate topic branch in case Linus still isn't happy with it.

-- Steve

2024-05-15 05:01:56

by Steven Rostedt

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the ftrace tree

On Wed, 15 May 2024 00:49:31 -0400
Steven Rostedt <[email protected]> wrote:

> > kernel/trace/ring_buffer.c:6286:72: warning: passing argument 1 of 'virt_to_pfn' makes pointer from integer without a cast [-Wint-conversion]
> > 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> > | ~~~~~~~~~~~~~~~~~~~~~~^~~
> > | |
> > | long unsigned int
> > include/asm-generic/memory_model.h:37:45: note: in definition of macro '__pfn_to_page'
> > 37 | #define __pfn_to_page(pfn) (vmemmap + (pfn))
> > | ^~~
> > kernel/trace/ring_buffer.c:6286:37: note: in expansion of macro 'virt_to_page'
> > 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> > | ^~~~~~~~~~~~
> > arch/powerpc/include/asm/page.h:228:53: note: expected 'const void *' but argument is of type 'long unsigned int'
> > 228 | static inline unsigned long virt_to_pfn(const void *kaddr)
> > | ~~~~~~~~~~~~^~~~~
> >
> > Introduced by commit
> >
> > 117c39200d9d ("ring-buffer: Introducing ring-buffer mapping functions")
> >
> > My arm multi_v7_defconfig build produced a similar warning.
> >
> > Is this really intended for v6.10? It seems a bit late.
> >
>
> Well, I submitted this for the v6.9 merge window, and Linus had issues
> with it. So we've been tweaking it for the entire time and it was ready
> a bit earlier, but due to my vacation and traveling I missed pushing it
> to next. :-p
>
> Most the code has been well tested, but because it is late, I kept it
> as a separate topic branch in case Linus still isn't happy with it.

And it looks like one of the "tweaks" dropped a (void *) cast.

This should fixed it:

diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index a02c7a52a0f5..7345a8b625fb 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -6283,7 +6283,7 @@ static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer,
}

while (p < nr_pages) {
- struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
+ struct page *page = virt_to_page((void *)cpu_buffer->subbuf_ids[s]);
int off = 0;

if (WARN_ON_ONCE(s >= nr_subbufs)) {


-- Steve

2024-05-15 05:11:36

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the ftrace tree

Hi all,

On Wed, 15 May 2024 12:48:08 +1000 Stephen Rothwell <[email protected]> wrote:
>
> After merging the ftrace tree, today's linux-next build (powerpc
> ppc64_defconfig) produced this warning:
>
> In file included from arch/powerpc/include/asm/page.h:332,
> from arch/powerpc/include/asm/mmu.h:144,
> from arch/powerpc/include/asm/paca.h:18,
> from arch/powerpc/include/asm/current.h:13,
> from include/linux/thread_info.h:23,
> from include/asm-generic/preempt.h:5,
> from ./arch/powerpc/include/generated/asm/preempt.h:1,
> from include/linux/preempt.h:79,
> from include/linux/alloc_tag.h:11,
> from include/linux/percpu.h:5,
> from include/linux/context_tracking_state.h:5,
> from include/linux/hardirq.h:5,
> from include/linux/interrupt.h:11,
> from include/linux/trace_recursion.h:5,
> from kernel/trace/ring_buffer.c:7:
> kernel/trace/ring_buffer.c: In function '__rb_map_vma':
> kernel/trace/ring_buffer.c:6286:72: warning: passing argument 1 of 'virt_to_pfn' makes pointer from integer without a cast [-Wint-conversion]
> 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> | ~~~~~~~~~~~~~~~~~~~~~~^~~
> | |
> | long unsigned int
> include/asm-generic/memory_model.h:37:45: note: in definition of macro '__pfn_to_page'
> 37 | #define __pfn_to_page(pfn) (vmemmap + (pfn))
> | ^~~
> kernel/trace/ring_buffer.c:6286:37: note: in expansion of macro 'virt_to_page'
> 6286 | struct page *page = virt_to_page(cpu_buffer->subbuf_ids[s]);
> | ^~~~~~~~~~~~
> arch/powerpc/include/asm/page.h:228:53: note: expected 'const void *' but argument is of type 'long unsigned int'
> 228 | static inline unsigned long virt_to_pfn(const void *kaddr)
> | ~~~~~~~~~~~~^~~~~
>
> Introduced by commit
>
> 117c39200d9d ("ring-buffer: Introducing ring-buffer mapping functions")
>
> My arm multi_v7_defconfig build produced a similar warning.

This became a build failure on my powerpc allyesconfig build, so I have
used the ftrace tree from next-20240414 for today.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2024-05-15 05:13:55

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the ftrace tree

Hi all,

On Wed, 15 May 2024 15:11:14 +1000 Stephen Rothwell <[email protected]> wrote:
> This became a build failure on my powerpc allyesconfig build, so I have
> used the ftrace tree from next-20240414 for today.
^^^^^^^^^^^^^
I meant next-20240514, of course.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature