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