1*4882a593Smuzhiyun { 2*4882a593Smuzhiyun "stack out of bounds", 3*4882a593Smuzhiyun .insns = { 4*4882a593Smuzhiyun BPF_ST_MEM(BPF_DW, BPF_REG_10, 8, 0), 5*4882a593Smuzhiyun BPF_EXIT_INSN(), 6*4882a593Smuzhiyun }, 7*4882a593Smuzhiyun .errstr = "invalid write to stack", 8*4882a593Smuzhiyun .result = REJECT, 9*4882a593Smuzhiyun }, 10*4882a593Smuzhiyun { 11*4882a593Smuzhiyun "uninitialized stack1", 12*4882a593Smuzhiyun .insns = { 13*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 14*4882a593Smuzhiyun BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 15*4882a593Smuzhiyun BPF_LD_MAP_FD(BPF_REG_1, 0), 16*4882a593Smuzhiyun BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), 17*4882a593Smuzhiyun BPF_EXIT_INSN(), 18*4882a593Smuzhiyun }, 19*4882a593Smuzhiyun .fixup_map_hash_8b = { 2 }, 20*4882a593Smuzhiyun .errstr = "invalid indirect read from stack", 21*4882a593Smuzhiyun .result = REJECT, 22*4882a593Smuzhiyun }, 23*4882a593Smuzhiyun { 24*4882a593Smuzhiyun "uninitialized stack2", 25*4882a593Smuzhiyun .insns = { 26*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 27*4882a593Smuzhiyun BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_2, -8), 28*4882a593Smuzhiyun BPF_EXIT_INSN(), 29*4882a593Smuzhiyun }, 30*4882a593Smuzhiyun .errstr = "invalid read from stack", 31*4882a593Smuzhiyun .result = REJECT, 32*4882a593Smuzhiyun }, 33*4882a593Smuzhiyun { 34*4882a593Smuzhiyun "invalid fp arithmetic", 35*4882a593Smuzhiyun /* If this gets ever changed, make sure JITs can deal with it. */ 36*4882a593Smuzhiyun .insns = { 37*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 0), 38*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_1, BPF_REG_10), 39*4882a593Smuzhiyun BPF_ALU64_IMM(BPF_SUB, BPF_REG_1, 8), 40*4882a593Smuzhiyun BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, 0), 41*4882a593Smuzhiyun BPF_EXIT_INSN(), 42*4882a593Smuzhiyun }, 43*4882a593Smuzhiyun .errstr = "R1 subtraction from stack pointer", 44*4882a593Smuzhiyun .result = REJECT, 45*4882a593Smuzhiyun }, 46*4882a593Smuzhiyun { 47*4882a593Smuzhiyun "non-invalid fp arithmetic", 48*4882a593Smuzhiyun .insns = { 49*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 0), 50*4882a593Smuzhiyun BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_0, -8), 51*4882a593Smuzhiyun BPF_EXIT_INSN(), 52*4882a593Smuzhiyun }, 53*4882a593Smuzhiyun .result = ACCEPT, 54*4882a593Smuzhiyun }, 55*4882a593Smuzhiyun { 56*4882a593Smuzhiyun "misaligned read from stack", 57*4882a593Smuzhiyun .insns = { 58*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 59*4882a593Smuzhiyun BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_2, -4), 60*4882a593Smuzhiyun BPF_EXIT_INSN(), 61*4882a593Smuzhiyun }, 62*4882a593Smuzhiyun .errstr = "misaligned stack access", 63*4882a593Smuzhiyun .result = REJECT, 64*4882a593Smuzhiyun }, 65