Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00d83045 authored by Björn Töpel's avatar Björn Töpel Committed by Daniel Borkmann
Browse files

selftests: bpf: add zero extend checks for ALU32 and/or/xor



Add three tests to test_verifier/basic_instr that make sure that the
high 32-bits of the destination register is cleared after an ALU32
and/or/xor.

Signed-off-by: default avatarBjörn Töpel <bjorn.topel@gmail.com>
Acked-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent fe121ee5
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -132,3 +132,42 @@
	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
	.result = ACCEPT,
},
{
	"and32 reg zero extend check",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, -1),
	BPF_MOV64_IMM(BPF_REG_2, -2),
	BPF_ALU32_REG(BPF_AND, BPF_REG_0, BPF_REG_2),
	BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
	BPF_EXIT_INSN(),
	},
	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
	.result = ACCEPT,
	.retval = 0,
},
{
	"or32 reg zero extend check",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, -1),
	BPF_MOV64_IMM(BPF_REG_2, -2),
	BPF_ALU32_REG(BPF_OR, BPF_REG_0, BPF_REG_2),
	BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
	BPF_EXIT_INSN(),
	},
	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
	.result = ACCEPT,
	.retval = 0,
},
{
	"xor32 reg zero extend check",
	.insns = {
	BPF_MOV64_IMM(BPF_REG_0, -1),
	BPF_MOV64_IMM(BPF_REG_2, 0),
	BPF_ALU32_REG(BPF_XOR, BPF_REG_0, BPF_REG_2),
	BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
	BPF_EXIT_INSN(),
	},
	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
	.result = ACCEPT,
	.retval = 0,
},