netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64
@ 2020-10-06 23:17 Hao Luo
  2020-10-07  0:43 ` Andrii Nakryiko
  0 siblings, 1 reply; 4+ messages in thread
From: Hao Luo @ 2020-10-06 23:17 UTC (permalink / raw)
  To: netdev, bpf, linux-kernel
  Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
	Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend,
	KP Singh, Hao Luo

Commit 4976b718c355 ("bpf: Introduce pseudo_btf_id") switched
the order of check_subprogs() and resolve_pseudo_ldimm() in
the verifier. Now an empty prog and the prog of a single
invalid ldimm expect to see the error "last insn is not an
exit or jmp" instead, because the check for subprogs comes
first. Fix the expection of the error message.

Tested:
 # ./test_verifier
 Summary: 1130 PASSED, 538 SKIPPED, 0 FAILED
 and the full set of bpf selftests.

Fixes: 4976b718c355 ("bpf: Introduce pseudo_btf_id")
Signed-off-by: Hao Luo <haoluo@google.com>
---
 tools/testing/selftests/bpf/verifier/basic.c    | 2 +-
 tools/testing/selftests/bpf/verifier/ld_imm64.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/verifier/basic.c b/tools/testing/selftests/bpf/verifier/basic.c
index b8d18642653a..de84f0d57082 100644
--- a/tools/testing/selftests/bpf/verifier/basic.c
+++ b/tools/testing/selftests/bpf/verifier/basic.c
@@ -2,7 +2,7 @@
 	"empty prog",
 	.insns = {
 	},
-	.errstr = "unknown opcode 00",
+	.errstr = "last insn is not an exit or jmp",
 	.result = REJECT,
 },
 {
diff --git a/tools/testing/selftests/bpf/verifier/ld_imm64.c b/tools/testing/selftests/bpf/verifier/ld_imm64.c
index 3856dba733e9..f300ba62edd0 100644
--- a/tools/testing/selftests/bpf/verifier/ld_imm64.c
+++ b/tools/testing/selftests/bpf/verifier/ld_imm64.c
@@ -55,7 +55,7 @@
 	.insns = {
 	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
 	},
-	.errstr = "invalid bpf_ld_imm64 insn",
+	.errstr = "last insn is not an exit or jmp",
 	.result = REJECT,
 },
 {
-- 
2.28.0.806.g8561365e88-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64
  2020-10-06 23:17 [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64 Hao Luo
@ 2020-10-07  0:43 ` Andrii Nakryiko
  2020-10-07  0:50   ` Hao Luo
  0 siblings, 1 reply; 4+ messages in thread
From: Andrii Nakryiko @ 2020-10-07  0:43 UTC (permalink / raw)
  To: Hao Luo
  Cc: Networking, bpf, open list, Alexei Starovoitov, Andrii Nakryiko,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh

On Tue, Oct 6, 2020 at 4:45 PM Hao Luo <haoluo@google.com> wrote:
>
> Commit 4976b718c355 ("bpf: Introduce pseudo_btf_id") switched
> the order of check_subprogs() and resolve_pseudo_ldimm() in
> the verifier. Now an empty prog and the prog of a single
> invalid ldimm expect to see the error "last insn is not an
> exit or jmp" instead, because the check for subprogs comes
> first. Fix the expection of the error message.
>
> Tested:
>  # ./test_verifier
>  Summary: 1130 PASSED, 538 SKIPPED, 0 FAILED
>  and the full set of bpf selftests.
>
> Fixes: 4976b718c355 ("bpf: Introduce pseudo_btf_id")
> Signed-off-by: Hao Luo <haoluo@google.com>
> ---
>  tools/testing/selftests/bpf/verifier/basic.c    | 2 +-
>  tools/testing/selftests/bpf/verifier/ld_imm64.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/verifier/basic.c b/tools/testing/selftests/bpf/verifier/basic.c
> index b8d18642653a..de84f0d57082 100644
> --- a/tools/testing/selftests/bpf/verifier/basic.c
> +++ b/tools/testing/selftests/bpf/verifier/basic.c
> @@ -2,7 +2,7 @@
>         "empty prog",
>         .insns = {
>         },
> -       .errstr = "unknown opcode 00",
> +       .errstr = "last insn is not an exit or jmp",

in this case the new message makes more sense, so this is a good change

>         .result = REJECT,
>  },
>  {
> diff --git a/tools/testing/selftests/bpf/verifier/ld_imm64.c b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> index 3856dba733e9..f300ba62edd0 100644
> --- a/tools/testing/selftests/bpf/verifier/ld_imm64.c
> +++ b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> @@ -55,7 +55,7 @@
>         .insns = {
>         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
>         },
> -       .errstr = "invalid bpf_ld_imm64 insn",
> +       .errstr = "last insn is not an exit or jmp",

but this completely defeats the purpose of the test; better add
BPF_EXIT_INSN() after ldimm64 instruction to actually get to
validation of ldimm64

>         .result = REJECT,
>  },
>  {
> --
> 2.28.0.806.g8561365e88-goog
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64
  2020-10-07  0:43 ` Andrii Nakryiko
@ 2020-10-07  0:50   ` Hao Luo
  2020-10-07  0:56     ` Andrii Nakryiko
  0 siblings, 1 reply; 4+ messages in thread
From: Hao Luo @ 2020-10-07  0:50 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Networking, bpf, open list, Alexei Starovoitov, Andrii Nakryiko,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh

On Tue, Oct 6, 2020 at 5:43 PM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Tue, Oct 6, 2020 at 4:45 PM Hao Luo <haoluo@google.com> wrote:
> >
> > Commit 4976b718c355 ("bpf: Introduce pseudo_btf_id") switched
> > the order of check_subprogs() and resolve_pseudo_ldimm() in
> > the verifier. Now an empty prog and the prog of a single
> > invalid ldimm expect to see the error "last insn is not an
> > exit or jmp" instead, because the check for subprogs comes
> > first. Fix the expection of the error message.
> >
> > Tested:
> >  # ./test_verifier
> >  Summary: 1130 PASSED, 538 SKIPPED, 0 FAILED
> >  and the full set of bpf selftests.
> >
> > Fixes: 4976b718c355 ("bpf: Introduce pseudo_btf_id")
> > Signed-off-by: Hao Luo <haoluo@google.com>
> > ---
[...]
> > diff --git a/tools/testing/selftests/bpf/verifier/ld_imm64.c b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > index 3856dba733e9..f300ba62edd0 100644
> > --- a/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > +++ b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > @@ -55,7 +55,7 @@
> >         .insns = {
> >         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
> >         },
> > -       .errstr = "invalid bpf_ld_imm64 insn",
> > +       .errstr = "last insn is not an exit or jmp",
>
> but this completely defeats the purpose of the test; better add
> BPF_EXIT_INSN() after ldimm64 instruction to actually get to
> validation of ldimm64
>

Actually there is already a test (test4) that covers this case. So it
makes sense to remove it, I think. I will resend with this change.

> >         .result = REJECT,
> >  },
> >  {
> > --
> > 2.28.0.806.g8561365e88-goog
> >

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64
  2020-10-07  0:50   ` Hao Luo
@ 2020-10-07  0:56     ` Andrii Nakryiko
  0 siblings, 0 replies; 4+ messages in thread
From: Andrii Nakryiko @ 2020-10-07  0:56 UTC (permalink / raw)
  To: Hao Luo
  Cc: Networking, bpf, open list, Alexei Starovoitov, Andrii Nakryiko,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh

On Tue, Oct 6, 2020 at 5:51 PM Hao Luo <haoluo@google.com> wrote:
>
> On Tue, Oct 6, 2020 at 5:43 PM Andrii Nakryiko
> <andrii.nakryiko@gmail.com> wrote:
> >
> > On Tue, Oct 6, 2020 at 4:45 PM Hao Luo <haoluo@google.com> wrote:
> > >
> > > Commit 4976b718c355 ("bpf: Introduce pseudo_btf_id") switched
> > > the order of check_subprogs() and resolve_pseudo_ldimm() in
> > > the verifier. Now an empty prog and the prog of a single
> > > invalid ldimm expect to see the error "last insn is not an
> > > exit or jmp" instead, because the check for subprogs comes
> > > first. Fix the expection of the error message.
> > >
> > > Tested:
> > >  # ./test_verifier
> > >  Summary: 1130 PASSED, 538 SKIPPED, 0 FAILED
> > >  and the full set of bpf selftests.
> > >
> > > Fixes: 4976b718c355 ("bpf: Introduce pseudo_btf_id")
> > > Signed-off-by: Hao Luo <haoluo@google.com>
> > > ---
> [...]
> > > diff --git a/tools/testing/selftests/bpf/verifier/ld_imm64.c b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > > index 3856dba733e9..f300ba62edd0 100644
> > > --- a/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > > +++ b/tools/testing/selftests/bpf/verifier/ld_imm64.c
> > > @@ -55,7 +55,7 @@
> > >         .insns = {
> > >         BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
> > >         },
> > > -       .errstr = "invalid bpf_ld_imm64 insn",
> > > +       .errstr = "last insn is not an exit or jmp",
> >
> > but this completely defeats the purpose of the test; better add
> > BPF_EXIT_INSN() after ldimm64 instruction to actually get to
> > validation of ldimm64
> >
>
> Actually there is already a test (test4) that covers this case. So it
> makes sense to remove it, I think. I will resend with this change.

ah, this test validates that half of ldimm64 at the very end won't
cause any troubles to verifier... Yeah, I guess now it's pointless
because it can never be the very last instruction.

>
> > >         .result = REJECT,
> > >  },
> > >  {
> > > --
> > > 2.28.0.806.g8561365e88-goog
> > >

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-10-07  0:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06 23:17 [PATCH] bpf: Fix test_verifier after introducing resolve_pseudo_ldimm64 Hao Luo
2020-10-07  0:43 ` Andrii Nakryiko
2020-10-07  0:50   ` Hao Luo
2020-10-07  0:56     ` Andrii Nakryiko

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).