diff options
author | Johan Almbladh <johan.almbladh@anyfinetworks.com> | 2021-08-09 11:18:26 +0200 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2021-08-10 11:33:25 +0200 |
commit | 53e33f9928cd61272e8e7902a876cb8cdf3f5c07 (patch) | |
tree | 09145d782e1240852028d954d5c3b5a52712b540 /lib | |
parent | 66e5eb8474554bc021e8a221c336bdaef13f7a69 (diff) |
bpf, tests: Add test for 32-bit context pointer argument passing
On a 32-bit architecture, the context pointer will occupy the low
half of R1, and the other half will be zero.
Signed-off-by: Johan Almbladh <johan.almbladh@anyfinetworks.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20210809091829.810076-12-johan.almbladh@anyfinetworks.com
Diffstat (limited to 'lib')
-rw-r--r-- | lib/test_bpf.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/test_bpf.c b/lib/test_bpf.c index 896d37f4f4b3..fcfaf45ae58a 100644 --- a/lib/test_bpf.c +++ b/lib/test_bpf.c @@ -2092,6 +2092,22 @@ static struct bpf_test tests[] = { #undef NUMER #undef DENOM }, +#ifdef CONFIG_32BIT + { + "INT: 32-bit context pointer word order and zero-extension", + .u.insns_int = { + BPF_ALU32_IMM(BPF_MOV, R0, 0), + BPF_JMP32_IMM(BPF_JEQ, R1, 0, 3), + BPF_ALU64_IMM(BPF_RSH, R1, 32), + BPF_JMP32_IMM(BPF_JNE, R1, 0, 1), + BPF_ALU32_IMM(BPF_MOV, R0, 1), + BPF_EXIT_INSN(), + }, + INTERNAL, + { }, + { { 0, 1 } } + }, +#endif { "check: missing ret", .u.insns = { |