selftests: bpf: update testcases for BPF_ALU | BPF_ARSH
authorJiong Wang <jiong.wang@netronome.com>
Wed, 5 Dec 2018 18:52:36 +0000 (13:52 -0500)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 7 Dec 2018 21:30:48 +0000 (13:30 -0800)
"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: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/test_verifier.c

index b4b4a3f..36ce58b 100644 (file)
@@ -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",