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 | |
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>
-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 | }, |