0001 {
0002 "direct stack access with 32-bit wraparound. test1",
0003 .insns = {
0004 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
0005 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x7fffffff),
0006 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x7fffffff),
0007 BPF_MOV32_IMM(BPF_REG_0, 0),
0008 BPF_STX_MEM(BPF_B, BPF_REG_1, BPF_REG_0, 0),
0009 BPF_EXIT_INSN(),
0010 },
0011 .errstr = "fp pointer and 2147483647",
0012 .result = REJECT
0013 },
0014 {
0015 "direct stack access with 32-bit wraparound. test2",
0016 .insns = {
0017 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
0018 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x3fffffff),
0019 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x3fffffff),
0020 BPF_MOV32_IMM(BPF_REG_0, 0),
0021 BPF_STX_MEM(BPF_B, BPF_REG_1, BPF_REG_0, 0),
0022 BPF_EXIT_INSN(),
0023 },
0024 .errstr = "fp pointer and 1073741823",
0025 .result = REJECT
0026 },
0027 {
0028 "direct stack access with 32-bit wraparound. test3",
0029 .insns = {
0030 BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),
0031 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x1fffffff),
0032 BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0x1fffffff),
0033 BPF_MOV32_IMM(BPF_REG_0, 0),
0034 BPF_STX_MEM(BPF_B, BPF_REG_1, BPF_REG_0, 0),
0035 BPF_EXIT_INSN(),
0036 },
0037 .errstr = "fp pointer offset 1073741822",
0038 .errstr_unpriv = "R1 stack pointer arithmetic goes out of range",
0039 .result = REJECT
0040 },