diff mbox series

[bpf] bpf, selftests: test_maps generating unrecognized data section

Message ID 161662006586.29133.187705917710998342.stgit@john-Precision-5820-Tower (mailing list archive)
State Superseded
Delegated to: BPF
Headers show
Series [bpf] bpf, selftests: test_maps generating unrecognized data section | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present fail Series targets non-next tree, but doesn't contain any Fixes tags
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for bpf
netdev/subject_prefix success Link
netdev/cc_maintainers warning 10 maintainers not CCed: linux-kselftest@vger.kernel.org yhs@fb.com kpsingh@kernel.org kafai@fb.com clang-built-linux@googlegroups.com ast@kernel.org nathan@kernel.org songliubraving@fb.com ndesaulniers@google.com shuah@kernel.org
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 10 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/header_inline success Link

Commit Message

John Fastabend March 24, 2021, 9:07 p.m. UTC
With a relatively recent clang master branch test_map skips a section,

 libbpf: elf: skipping unrecognized data section(5) .rodata.str1.1

the cause is some pointless strings from bpf_printks in the BPF program
loaded during testing. Remove them so we stop tripping our test bots.

Signed-off-by: John Fastabend <john.fastabend@gmail.com>
---
 .../selftests/bpf/progs/sockmap_tcp_msg_prog.c     |    3 ---
 1 file changed, 3 deletions(-)

Comments

Daniel Borkmann March 25, 2021, 9:07 p.m. UTC | #1
On 3/24/21 10:07 PM, John Fastabend wrote:
> With a relatively recent clang master branch test_map skips a section,
> 
>   libbpf: elf: skipping unrecognized data section(5) .rodata.str1.1
> 
> the cause is some pointless strings from bpf_printks in the BPF program
> loaded during testing. Remove them so we stop tripping our test bots.
> 
> Signed-off-by: John Fastabend <john.fastabend@gmail.com>
> ---
>   .../selftests/bpf/progs/sockmap_tcp_msg_prog.c     |    3 ---
>   1 file changed, 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> index fdb4bf4408fa..0f603253f4ed 100644
> --- a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> +++ b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> @@ -16,10 +16,7 @@ int bpf_prog1(struct sk_msg_md *msg)
>   	if (data + 8 > data_end)
>   		return SK_DROP;
>   
> -	bpf_printk("data length %i\n", (__u64)msg->data_end - (__u64)msg->data);
>   	d = (char *)data;

Do we still need 'd' as well in that case, or the data + 8 > data_end test if we don't
read any of the data? I'm not sure what was the original purpose of the prog, perhaps
just to test that we can attach /something/ in general? Maybe in that case empty prog
is sufficient if we don't do anything useful with the rest?

> -	bpf_printk("hello sendmsg hook %i %i\n", d[0], d[1]);
> -
>   	return SK_PASS;
>   }
>   
>
John Fastabend March 26, 2021, 12:35 a.m. UTC | #2
Daniel Borkmann wrote:
> On 3/24/21 10:07 PM, John Fastabend wrote:
> > With a relatively recent clang master branch test_map skips a section,
> > 
> >   libbpf: elf: skipping unrecognized data section(5) .rodata.str1.1
> > 
> > the cause is some pointless strings from bpf_printks in the BPF program
> > loaded during testing. Remove them so we stop tripping our test bots.
> > 
> > Signed-off-by: John Fastabend <john.fastabend@gmail.com>
> > ---
> >   .../selftests/bpf/progs/sockmap_tcp_msg_prog.c     |    3 ---
> >   1 file changed, 3 deletions(-)
> > 
> > diff --git a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> > index fdb4bf4408fa..0f603253f4ed 100644
> > --- a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> > +++ b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> > @@ -16,10 +16,7 @@ int bpf_prog1(struct sk_msg_md *msg)
> >   	if (data + 8 > data_end)
> >   		return SK_DROP;
> >   
> > -	bpf_printk("data length %i\n", (__u64)msg->data_end - (__u64)msg->data);
> >   	d = (char *)data;
> 
> Do we still need 'd' as well in that case, or the data + 8 > data_end test if we don't
> read any of the data? I'm not sure what was the original purpose of the prog, perhaps
> just to test that we can attach /something/ in general? Maybe in that case empty prog
> is sufficient if we don't do anything useful with the rest?

This program and test existed before test_sockmap was running and doing a
more complete test set. At that time it was the only thing verifying that
we could read the d[] and check lengths.

At this point these cases are covered there so it should be OK to just
make it an empty program. Then it is _just_ testing the map attach/detach
logic not that the programs themselves work correctly.

By the way without d marked violatile my compiler removes the load there
so its pointless as you note.

Because this is used for test maps I'll just make this an empty program.

> 
> > -	bpf_printk("hello sendmsg hook %i %i\n", d[0], d[1]);
> > -
> >   	return SK_PASS;
> >   }
> >   
> > 
>
Andrii Nakryiko March 26, 2021, 3:03 a.m. UTC | #3
On Wed, Mar 24, 2021 at 2:07 PM John Fastabend <john.fastabend@gmail.com> wrote:
>
> With a relatively recent clang master branch test_map skips a section,
>
>  libbpf: elf: skipping unrecognized data section(5) .rodata.str1.1
>

So it was on my TODO list for a while to get rid of this by combining
all .rodata* sections into one at load time. I even outline that in
"libbpf v1.0" doc ([0]). I just haven't gotten to implementing this
yet. You can safely ignore this for now. But I also have nothing
against cleaning up tests, of course.

  [0] https://docs.google.com/document/d/1UyjTZuPFWiPFyKk1tV5an11_iaRuec6U-ZESZ54nNTY


> the cause is some pointless strings from bpf_printks in the BPF program
> loaded during testing. Remove them so we stop tripping our test bots.
>
> Signed-off-by: John Fastabend <john.fastabend@gmail.com>
> ---
>  .../selftests/bpf/progs/sockmap_tcp_msg_prog.c     |    3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> index fdb4bf4408fa..0f603253f4ed 100644
> --- a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> +++ b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
> @@ -16,10 +16,7 @@ int bpf_prog1(struct sk_msg_md *msg)
>         if (data + 8 > data_end)
>                 return SK_DROP;
>
> -       bpf_printk("data length %i\n", (__u64)msg->data_end - (__u64)msg->data);
>         d = (char *)data;
> -       bpf_printk("hello sendmsg hook %i %i\n", d[0], d[1]);
> -
>         return SK_PASS;
>  }
>
>
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
index fdb4bf4408fa..0f603253f4ed 100644
--- a/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
+++ b/tools/testing/selftests/bpf/progs/sockmap_tcp_msg_prog.c
@@ -16,10 +16,7 @@  int bpf_prog1(struct sk_msg_md *msg)
 	if (data + 8 > data_end)
 		return SK_DROP;
 
-	bpf_printk("data length %i\n", (__u64)msg->data_end - (__u64)msg->data);
 	d = (char *)data;
-	bpf_printk("hello sendmsg hook %i %i\n", d[0], d[1]);
-
 	return SK_PASS;
 }