1*4882a593Smuzhiyun { 2*4882a593Smuzhiyun "test1 ld_imm64", 3*4882a593Smuzhiyun .insns = { 4*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 5*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 6*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 7*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 8*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 9*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 2), 10*4882a593Smuzhiyun BPF_EXIT_INSN(), 11*4882a593Smuzhiyun }, 12*4882a593Smuzhiyun .errstr = "invalid BPF_LD_IMM insn", 13*4882a593Smuzhiyun .errstr_unpriv = "R1 pointer comparison", 14*4882a593Smuzhiyun .result = REJECT, 15*4882a593Smuzhiyun }, 16*4882a593Smuzhiyun { 17*4882a593Smuzhiyun "test2 ld_imm64", 18*4882a593Smuzhiyun .insns = { 19*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 20*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 21*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 22*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 23*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 24*4882a593Smuzhiyun BPF_EXIT_INSN(), 25*4882a593Smuzhiyun }, 26*4882a593Smuzhiyun .errstr = "invalid BPF_LD_IMM insn", 27*4882a593Smuzhiyun .errstr_unpriv = "R1 pointer comparison", 28*4882a593Smuzhiyun .result = REJECT, 29*4882a593Smuzhiyun }, 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun "test3 ld_imm64", 32*4882a593Smuzhiyun .insns = { 33*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1), 34*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 35*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 36*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 0), 37*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 38*4882a593Smuzhiyun BPF_LD_IMM64(BPF_REG_0, 1), 39*4882a593Smuzhiyun BPF_EXIT_INSN(), 40*4882a593Smuzhiyun }, 41*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 42*4882a593Smuzhiyun .result = REJECT, 43*4882a593Smuzhiyun }, 44*4882a593Smuzhiyun { 45*4882a593Smuzhiyun "test4 ld_imm64", 46*4882a593Smuzhiyun .insns = { 47*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 48*4882a593Smuzhiyun BPF_EXIT_INSN(), 49*4882a593Smuzhiyun }, 50*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 51*4882a593Smuzhiyun .result = REJECT, 52*4882a593Smuzhiyun }, 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun "test6 ld_imm64", 55*4882a593Smuzhiyun .insns = { 56*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0), 57*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 0, 0), 58*4882a593Smuzhiyun BPF_EXIT_INSN(), 59*4882a593Smuzhiyun }, 60*4882a593Smuzhiyun .result = ACCEPT, 61*4882a593Smuzhiyun }, 62*4882a593Smuzhiyun { 63*4882a593Smuzhiyun "test7 ld_imm64", 64*4882a593Smuzhiyun .insns = { 65*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 66*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 0, 1), 67*4882a593Smuzhiyun BPF_EXIT_INSN(), 68*4882a593Smuzhiyun }, 69*4882a593Smuzhiyun .result = ACCEPT, 70*4882a593Smuzhiyun .retval = 1, 71*4882a593Smuzhiyun }, 72*4882a593Smuzhiyun { 73*4882a593Smuzhiyun "test8 ld_imm64", 74*4882a593Smuzhiyun .insns = { 75*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1), 76*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 0, 1), 77*4882a593Smuzhiyun BPF_EXIT_INSN(), 78*4882a593Smuzhiyun }, 79*4882a593Smuzhiyun .errstr = "uses reserved fields", 80*4882a593Smuzhiyun .result = REJECT, 81*4882a593Smuzhiyun }, 82*4882a593Smuzhiyun { 83*4882a593Smuzhiyun "test9 ld_imm64", 84*4882a593Smuzhiyun .insns = { 85*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 86*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 1, 1), 87*4882a593Smuzhiyun BPF_EXIT_INSN(), 88*4882a593Smuzhiyun }, 89*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 90*4882a593Smuzhiyun .result = REJECT, 91*4882a593Smuzhiyun }, 92*4882a593Smuzhiyun { 93*4882a593Smuzhiyun "test10 ld_imm64", 94*4882a593Smuzhiyun .insns = { 95*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 96*4882a593Smuzhiyun BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1), 97*4882a593Smuzhiyun BPF_EXIT_INSN(), 98*4882a593Smuzhiyun }, 99*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 100*4882a593Smuzhiyun .result = REJECT, 101*4882a593Smuzhiyun }, 102*4882a593Smuzhiyun { 103*4882a593Smuzhiyun "test11 ld_imm64", 104*4882a593Smuzhiyun .insns = { 105*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1), 106*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1), 107*4882a593Smuzhiyun BPF_EXIT_INSN(), 108*4882a593Smuzhiyun }, 109*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 110*4882a593Smuzhiyun .result = REJECT, 111*4882a593Smuzhiyun }, 112*4882a593Smuzhiyun { 113*4882a593Smuzhiyun "test12 ld_imm64", 114*4882a593Smuzhiyun .insns = { 115*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 0), 116*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1), 117*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 0, 0), 118*4882a593Smuzhiyun BPF_EXIT_INSN(), 119*4882a593Smuzhiyun }, 120*4882a593Smuzhiyun .errstr = "not pointing to valid bpf_map", 121*4882a593Smuzhiyun .result = REJECT, 122*4882a593Smuzhiyun }, 123*4882a593Smuzhiyun { 124*4882a593Smuzhiyun "test13 ld_imm64", 125*4882a593Smuzhiyun .insns = { 126*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_1, 0), 127*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1), 128*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1), 129*4882a593Smuzhiyun BPF_EXIT_INSN(), 130*4882a593Smuzhiyun }, 131*4882a593Smuzhiyun .errstr = "invalid bpf_ld_imm64 insn", 132*4882a593Smuzhiyun .result = REJECT, 133*4882a593Smuzhiyun }, 134*4882a593Smuzhiyun { 135*4882a593Smuzhiyun "test14 ld_imm64: reject 2nd imm != 0", 136*4882a593Smuzhiyun .insns = { 137*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 0), 138*4882a593Smuzhiyun BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1, 139*4882a593Smuzhiyun BPF_PSEUDO_MAP_FD, 0, 0), 140*4882a593Smuzhiyun BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe), 141*4882a593Smuzhiyun BPF_EXIT_INSN(), 142*4882a593Smuzhiyun }, 143*4882a593Smuzhiyun .fixup_map_hash_48b = { 1 }, 144*4882a593Smuzhiyun .errstr = "unrecognized bpf_ld_imm64 insn", 145*4882a593Smuzhiyun .result = REJECT, 146*4882a593Smuzhiyun }, 147