diff options
| author | Yonghong Song <yhs@fb.com> | 2017-11-21 14:23:40 -0500 |
|---|---|---|
| committer | Daniel Borkmann <daniel@iogearbox.net> | 2017-11-21 15:23:05 -0500 |
| commit | f1a8b8e3d98b0b3d1d88d119f52cc85d05ab3189 (patch) | |
| tree | 9634bc10802301580cdb1c4771a04213de4d06df /tools | |
| parent | 6547f424be5d9d75c78c146ed6e9f71be1c43981 (diff) | |
bpf: change bpf_probe_write_user to bpf_trace_printk in test_verifier
There are four tests in test_verifier using bpf_probe_write_user
helper. These four tests will emit the following kernel messages
[ 12.974753] test_verifier[220] is installing a program with bpf_probe_write_user
helper that may corrupt user memory!
[ 12.979285] test_verifier[220] is installing a program with bpf_probe_write_user
helper that may corrupt user memory!
......
This may confuse certain users. This patch replaces bpf_probe_write_user
with bpf_trace_printk. The test_verifier already uses bpf_trace_printk
earlier in the test and a trace_printk warning message has been printed.
So this patch does not emit any more kernel messages.
Fixes: b6ff63911232 ("bpf: fix and add test cases for ARG_CONST_SIZE_OR_ZERO semantics change")
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/testing/selftests/bpf/test_verifier.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c index bf092b83e453..2a5267bef160 100644 --- a/tools/testing/selftests/bpf/test_verifier.c +++ b/tools/testing/selftests/bpf/test_verifier.c | |||
| @@ -4377,11 +4377,10 @@ static struct bpf_test tests[] = { | |||
| 4377 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), | 4377 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| 4378 | BPF_LD_MAP_FD(BPF_REG_1, 0), | 4378 | BPF_LD_MAP_FD(BPF_REG_1, 0), |
| 4379 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), | 4379 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), |
| 4380 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), | 4380 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 3), |
| 4381 | BPF_MOV64_IMM(BPF_REG_1, 0), | 4381 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| 4382 | BPF_MOV64_REG(BPF_REG_2, BPF_REG_0), | 4382 | BPF_MOV64_IMM(BPF_REG_2, 0), |
| 4383 | BPF_MOV64_IMM(BPF_REG_3, 0), | 4383 | BPF_EMIT_CALL(BPF_FUNC_trace_printk), |
| 4384 | BPF_EMIT_CALL(BPF_FUNC_probe_write_user), | ||
| 4385 | BPF_EXIT_INSN(), | 4384 | BPF_EXIT_INSN(), |
| 4386 | }, | 4385 | }, |
| 4387 | .fixup_map2 = { 3 }, | 4386 | .fixup_map2 = { 3 }, |
| @@ -4481,14 +4480,12 @@ static struct bpf_test tests[] = { | |||
| 4481 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), | 4480 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| 4482 | BPF_LD_MAP_FD(BPF_REG_1, 0), | 4481 | BPF_LD_MAP_FD(BPF_REG_1, 0), |
| 4483 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), | 4482 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), |
| 4484 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 5), | 4483 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), |
| 4485 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), | 4484 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| 4486 | BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, | 4485 | BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, |
| 4487 | offsetof(struct test_val, foo)), | 4486 | offsetof(struct test_val, foo)), |
| 4488 | BPF_MOV64_REG(BPF_REG_2, BPF_REG_1), | 4487 | BPF_MOV64_IMM(BPF_REG_2, 0), |
| 4489 | BPF_MOV64_IMM(BPF_REG_1, 0), | 4488 | BPF_EMIT_CALL(BPF_FUNC_trace_printk), |
| 4490 | BPF_MOV64_IMM(BPF_REG_3, 0), | ||
| 4491 | BPF_EMIT_CALL(BPF_FUNC_probe_write_user), | ||
| 4492 | BPF_EXIT_INSN(), | 4489 | BPF_EXIT_INSN(), |
| 4493 | }, | 4490 | }, |
| 4494 | .fixup_map2 = { 3 }, | 4491 | .fixup_map2 = { 3 }, |
| @@ -4618,18 +4615,16 @@ static struct bpf_test tests[] = { | |||
| 4618 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), | 4615 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| 4619 | BPF_LD_MAP_FD(BPF_REG_1, 0), | 4616 | BPF_LD_MAP_FD(BPF_REG_1, 0), |
| 4620 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), | 4617 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), |
| 4621 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6), | 4618 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 5), |
| 4622 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), | 4619 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| 4623 | BPF_MOV64_IMM(BPF_REG_3, 0), | 4620 | BPF_MOV64_IMM(BPF_REG_3, 0), |
| 4624 | BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_3), | 4621 | BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_3), |
| 4625 | BPF_MOV64_REG(BPF_REG_2, BPF_REG_1), | 4622 | BPF_MOV64_IMM(BPF_REG_2, 0), |
| 4626 | BPF_MOV64_IMM(BPF_REG_1, 0), | 4623 | BPF_EMIT_CALL(BPF_FUNC_trace_printk), |
| 4627 | BPF_MOV64_IMM(BPF_REG_3, 0), | ||
| 4628 | BPF_EMIT_CALL(BPF_FUNC_probe_write_user), | ||
| 4629 | BPF_EXIT_INSN(), | 4624 | BPF_EXIT_INSN(), |
| 4630 | }, | 4625 | }, |
| 4631 | .fixup_map2 = { 3 }, | 4626 | .fixup_map2 = { 3 }, |
| 4632 | .errstr = "R2 min value is outside of the array range", | 4627 | .errstr = "R1 min value is outside of the array range", |
| 4633 | .result = REJECT, | 4628 | .result = REJECT, |
| 4634 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, | 4629 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
| 4635 | }, | 4630 | }, |
| @@ -4760,20 +4755,18 @@ static struct bpf_test tests[] = { | |||
| 4760 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), | 4755 | BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| 4761 | BPF_LD_MAP_FD(BPF_REG_1, 0), | 4756 | BPF_LD_MAP_FD(BPF_REG_1, 0), |
| 4762 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), | 4757 | BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem), |
| 4763 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7), | 4758 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6), |
| 4764 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), | 4759 | BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| 4765 | BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_0, 0), | 4760 | BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_0, 0), |
| 4766 | BPF_JMP_IMM(BPF_JGT, BPF_REG_3, | 4761 | BPF_JMP_IMM(BPF_JGT, BPF_REG_3, |
| 4767 | offsetof(struct test_val, foo), 4), | 4762 | offsetof(struct test_val, foo), 3), |
| 4768 | BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_3), | 4763 | BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_3), |
| 4769 | BPF_MOV64_REG(BPF_REG_2, BPF_REG_1), | 4764 | BPF_MOV64_IMM(BPF_REG_2, 0), |
| 4770 | BPF_MOV64_IMM(BPF_REG_1, 0), | 4765 | BPF_EMIT_CALL(BPF_FUNC_trace_printk), |
| 4771 | BPF_MOV64_IMM(BPF_REG_3, 0), | ||
| 4772 | BPF_EMIT_CALL(BPF_FUNC_probe_write_user), | ||
| 4773 | BPF_EXIT_INSN(), | 4766 | BPF_EXIT_INSN(), |
| 4774 | }, | 4767 | }, |
| 4775 | .fixup_map2 = { 3 }, | 4768 | .fixup_map2 = { 3 }, |
| 4776 | .errstr = "R2 min value is outside of the array range", | 4769 | .errstr = "R1 min value is outside of the array range", |
| 4777 | .result = REJECT, | 4770 | .result = REJECT, |
| 4778 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, | 4771 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
| 4779 | }, | 4772 | }, |
