174 lines · c
1{2 "dead code: start",3 .insns = {4 BPF_JMP_IMM(BPF_JA, 0, 0, 2),5 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),6 BPF_JMP_IMM(BPF_JA, 0, 0, 2),7 BPF_MOV64_IMM(BPF_REG_0, 7),8 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4),9 BPF_EXIT_INSN(),10 },11 .errstr_unpriv = "R9 !read_ok",12 .result_unpriv = REJECT,13 .result = ACCEPT,14 .retval = 7,15},16{17 "dead code: mid 1",18 .insns = {19 BPF_MOV64_IMM(BPF_REG_0, 7),20 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),21 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0),22 BPF_EXIT_INSN(),23 },24 .result = ACCEPT,25 .retval = 7,26},27{28 "dead code: mid 2",29 .insns = {30 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),31 BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4),32 BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1),33 BPF_JMP_IMM(BPF_JA, 0, 0, 2),34 BPF_MOV64_IMM(BPF_REG_0, 7),35 BPF_EXIT_INSN(),36 BPF_MOV64_IMM(BPF_REG_0, 1),37 BPF_EXIT_INSN(),38 },39 .result = ACCEPT,40 .retval = 1,41},42{43 "dead code: end 1",44 .insns = {45 BPF_MOV64_IMM(BPF_REG_0, 7),46 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),47 BPF_EXIT_INSN(),48 BPF_EXIT_INSN(),49 },50 .result = ACCEPT,51 .retval = 7,52},53{54 "dead code: end 2",55 .insns = {56 BPF_MOV64_IMM(BPF_REG_0, 7),57 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),58 BPF_EXIT_INSN(),59 BPF_MOV64_IMM(BPF_REG_0, 12),60 BPF_EXIT_INSN(),61 },62 .result = ACCEPT,63 .retval = 7,64},65{66 "dead code: end 3",67 .insns = {68 BPF_MOV64_IMM(BPF_REG_0, 7),69 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),70 BPF_EXIT_INSN(),71 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),72 BPF_JMP_IMM(BPF_JA, 0, 0, 1),73 BPF_MOV64_IMM(BPF_REG_0, 12),74 BPF_JMP_IMM(BPF_JA, 0, 0, -5),75 },76 .result = ACCEPT,77 .retval = 7,78},79{80 "dead code: tail of main + func",81 .insns = {82 BPF_MOV64_IMM(BPF_REG_0, 7),83 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),84 BPF_EXIT_INSN(),85 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),86 BPF_EXIT_INSN(),87 BPF_MOV64_IMM(BPF_REG_0, 12),88 BPF_EXIT_INSN(),89 },90 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",91 .result_unpriv = REJECT,92 .result = ACCEPT,93 .retval = 7,94},95{96 "dead code: tail of main + two functions",97 .insns = {98 BPF_MOV64_IMM(BPF_REG_0, 7),99 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),100 BPF_EXIT_INSN(),101 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),102 BPF_EXIT_INSN(),103 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),104 BPF_EXIT_INSN(),105 BPF_MOV64_IMM(BPF_REG_0, 12),106 BPF_EXIT_INSN(),107 },108 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",109 .result_unpriv = REJECT,110 .result = ACCEPT,111 .retval = 7,112},113{114 "dead code: function in the middle and mid of another func",115 .insns = {116 BPF_MOV64_IMM(BPF_REG_1, 7),117 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3),118 BPF_EXIT_INSN(),119 BPF_MOV64_IMM(BPF_REG_0, 12),120 BPF_EXIT_INSN(),121 BPF_MOV64_IMM(BPF_REG_0, 7),122 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1),123 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5),124 BPF_EXIT_INSN(),125 },126 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",127 .result_unpriv = REJECT,128 .result = ACCEPT,129 .retval = 7,130},131{132 "dead code: middle of main before call",133 .insns = {134 BPF_MOV64_IMM(BPF_REG_1, 2),135 BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1),136 BPF_MOV64_IMM(BPF_REG_1, 5),137 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),138 BPF_EXIT_INSN(),139 BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),140 BPF_EXIT_INSN(),141 },142 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",143 .result_unpriv = REJECT,144 .result = ACCEPT,145 .retval = 2,146},147{148 "dead code: start of a function",149 .insns = {150 BPF_MOV64_IMM(BPF_REG_1, 2),151 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),152 BPF_EXIT_INSN(),153 BPF_JMP_IMM(BPF_JA, 0, 0, 0),154 BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),155 BPF_EXIT_INSN(),156 },157 .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",158 .result_unpriv = REJECT,159 .result = ACCEPT,160 .retval = 2,161},162{163 "dead code: zero extension",164 .insns = {165 BPF_MOV64_IMM(BPF_REG_0, 0),166 BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4),167 BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),168 BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4),169 BPF_EXIT_INSN(),170 },171 .result = ACCEPT,172 .retval = 0,173},174