aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2017-11-21 14:23:40 -0500
committerDaniel Borkmann <daniel@iogearbox.net>2017-11-21 15:23:05 -0500
commitf1a8b8e3d98b0b3d1d88d119f52cc85d05ab3189 (patch)
tree9634bc10802301580cdb1c4771a04213de4d06df
parent6547f424be5d9d75c78c146ed6e9f71be1c43981 (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.c39
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 },