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

Commit d3796e8f authored by John Fastabend's avatar John Fastabend Committed by Greg Kroah-Hartman
Browse files

bpf, selftests: Add a verifier test for assigning 32bit reg states to 64bit ones



commit cf66c29bd7534813d2e1971fab71e25fe87c7e0a upstream

Added a verifier test for assigning 32bit reg states to
64bit where 32bit reg holds a constant value of 0.

Without previous kernel verifier.c fix, the test in
this patch will fail.

Signed-off-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/159077335867.6014.2075350327073125374.stgit@john-Precision-5820-Tower


Signed-off-by: default avatarOvidiu Panait <ovidiu.panait@windriver.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8dec99ab
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -545,3 +545,25 @@
	},
	.result = ACCEPT
},
{
	"assigning 32bit bounds to 64bit for wA = 0, wB = wA",
	.insns = {
	BPF_LDX_MEM(BPF_W, BPF_REG_8, BPF_REG_1,
		    offsetof(struct __sk_buff, data_end)),
	BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_1,
		    offsetof(struct __sk_buff, data)),
	BPF_MOV32_IMM(BPF_REG_9, 0),
	BPF_MOV32_REG(BPF_REG_2, BPF_REG_9),
	BPF_MOV64_REG(BPF_REG_6, BPF_REG_7),
	BPF_ALU64_REG(BPF_ADD, BPF_REG_6, BPF_REG_2),
	BPF_MOV64_REG(BPF_REG_3, BPF_REG_6),
	BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, 8),
	BPF_JMP_REG(BPF_JGT, BPF_REG_3, BPF_REG_8, 1),
	BPF_LDX_MEM(BPF_W, BPF_REG_5, BPF_REG_6, 0),
	BPF_MOV64_IMM(BPF_REG_0, 0),
	BPF_EXIT_INSN(),
	},
	.prog_type = BPF_PROG_TYPE_SCHED_CLS,
	.result = ACCEPT,
	.flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
},