147 lines · c
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 = "jump into the middle of ldimm64 insn 1",13 .errstr_unpriv = "jump into the middle of ldimm64 insn 1",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 = "jump into the middle of ldimm64 insn 1",27 .errstr_unpriv = "jump into the middle of ldimm64 insn 1",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