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

Commit c099f3f4 authored by Jiong Wang's avatar Jiong Wang Committed by Alexei Starovoitov
Browse files

selftests: bpf: update testcases for BPF_ALU | BPF_ARSH



"arsh32 on imm" and "arsh32 on reg" now are accepted. Also added two new
testcases to make sure arsh32 won't be treated as arsh64 during
interpretation or JIT code-gen for which case the high bits will be moved
into low halve that the testcases could catch them.

Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarJiong Wang <jiong.wang@netronome.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent c49f7dbd
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -721,8 +721,18 @@ static struct bpf_test tests[] = {
			BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 5),
			BPF_EXIT_INSN(),
		},
		.result = REJECT,
		.errstr = "unknown opcode c4",
		.result = ACCEPT,
		.retval = 0,
	},
	{
		"arsh32 on imm 2",
		.insns = {
			BPF_LD_IMM64(BPF_REG_0, 0x1122334485667788),
			BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 7),
			BPF_EXIT_INSN(),
		},
		.result = ACCEPT,
		.retval = -16069393,
	},
	{
		"arsh32 on reg",
@@ -732,8 +742,19 @@ static struct bpf_test tests[] = {
			BPF_ALU32_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1),
			BPF_EXIT_INSN(),
		},
		.result = REJECT,
		.errstr = "unknown opcode cc",
		.result = ACCEPT,
		.retval = 0,
	},
	{
		"arsh32 on reg 2",
		.insns = {
			BPF_LD_IMM64(BPF_REG_0, 0xffff55667788),
			BPF_MOV64_IMM(BPF_REG_1, 15),
			BPF_ALU32_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1),
			BPF_EXIT_INSN(),
		},
		.result = ACCEPT,
		.retval = 43724,
	},
	{
		"arsh64 on imm",