Back to home page

OSCL-LXR

 
 

    


0001 {
0002     "dead code: start",
0003     .insns = {
0004     BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0005     BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
0006     BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0007     BPF_MOV64_IMM(BPF_REG_0, 7),
0008     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4),
0009     BPF_EXIT_INSN(),
0010     },
0011     .errstr_unpriv = "R9 !read_ok",
0012     .result_unpriv = REJECT,
0013     .result = ACCEPT,
0014     .retval = 7,
0015 },
0016 {
0017     "dead code: mid 1",
0018     .insns = {
0019     BPF_MOV64_IMM(BPF_REG_0, 7),
0020     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
0021     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0),
0022     BPF_EXIT_INSN(),
0023     },
0024     .result = ACCEPT,
0025     .retval = 7,
0026 },
0027 {
0028     "dead code: mid 2",
0029     .insns = {
0030     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
0031     BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4),
0032     BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1),
0033     BPF_JMP_IMM(BPF_JA, 0, 0, 2),
0034     BPF_MOV64_IMM(BPF_REG_0, 7),
0035     BPF_EXIT_INSN(),
0036     BPF_MOV64_IMM(BPF_REG_0, 1),
0037     BPF_EXIT_INSN(),
0038     },
0039     .result = ACCEPT,
0040     .retval = 1,
0041 },
0042 {
0043     "dead code: end 1",
0044     .insns = {
0045     BPF_MOV64_IMM(BPF_REG_0, 7),
0046     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
0047     BPF_EXIT_INSN(),
0048     BPF_EXIT_INSN(),
0049     },
0050     .result = ACCEPT,
0051     .retval = 7,
0052 },
0053 {
0054     "dead code: end 2",
0055     .insns = {
0056     BPF_MOV64_IMM(BPF_REG_0, 7),
0057     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
0058     BPF_EXIT_INSN(),
0059     BPF_MOV64_IMM(BPF_REG_0, 12),
0060     BPF_EXIT_INSN(),
0061     },
0062     .result = ACCEPT,
0063     .retval = 7,
0064 },
0065 {
0066     "dead code: end 3",
0067     .insns = {
0068     BPF_MOV64_IMM(BPF_REG_0, 7),
0069     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
0070     BPF_EXIT_INSN(),
0071     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1),
0072     BPF_JMP_IMM(BPF_JA, 0, 0, 1),
0073     BPF_MOV64_IMM(BPF_REG_0, 12),
0074     BPF_JMP_IMM(BPF_JA, 0, 0, -5),
0075     },
0076     .result = ACCEPT,
0077     .retval = 7,
0078 },
0079 {
0080     "dead code: tail of main + func",
0081     .insns = {
0082     BPF_MOV64_IMM(BPF_REG_0, 7),
0083     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
0084     BPF_EXIT_INSN(),
0085     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
0086     BPF_EXIT_INSN(),
0087     BPF_MOV64_IMM(BPF_REG_0, 12),
0088     BPF_EXIT_INSN(),
0089     },
0090     .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
0091     .result_unpriv = REJECT,
0092     .result = ACCEPT,
0093     .retval = 7,
0094 },
0095 {
0096     "dead code: tail of main + two functions",
0097     .insns = {
0098     BPF_MOV64_IMM(BPF_REG_0, 7),
0099     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1),
0100     BPF_EXIT_INSN(),
0101     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
0102     BPF_EXIT_INSN(),
0103     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
0104     BPF_EXIT_INSN(),
0105     BPF_MOV64_IMM(BPF_REG_0, 12),
0106     BPF_EXIT_INSN(),
0107     },
0108     .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
0109     .result_unpriv = REJECT,
0110     .result = ACCEPT,
0111     .retval = 7,
0112 },
0113 {
0114     "dead code: function in the middle and mid of another func",
0115     .insns = {
0116     BPF_MOV64_IMM(BPF_REG_1, 7),
0117     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3),
0118     BPF_EXIT_INSN(),
0119     BPF_MOV64_IMM(BPF_REG_0, 12),
0120     BPF_EXIT_INSN(),
0121     BPF_MOV64_IMM(BPF_REG_0, 7),
0122     BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1),
0123     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5),
0124     BPF_EXIT_INSN(),
0125     },
0126     .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
0127     .result_unpriv = REJECT,
0128     .result = ACCEPT,
0129     .retval = 7,
0130 },
0131 {
0132     "dead code: middle of main before call",
0133     .insns = {
0134     BPF_MOV64_IMM(BPF_REG_1, 2),
0135     BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1),
0136     BPF_MOV64_IMM(BPF_REG_1, 5),
0137     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
0138     BPF_EXIT_INSN(),
0139     BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
0140     BPF_EXIT_INSN(),
0141     },
0142     .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
0143     .result_unpriv = REJECT,
0144     .result = ACCEPT,
0145     .retval = 2,
0146 },
0147 {
0148     "dead code: start of a function",
0149     .insns = {
0150     BPF_MOV64_IMM(BPF_REG_1, 2),
0151     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1),
0152     BPF_EXIT_INSN(),
0153     BPF_JMP_IMM(BPF_JA, 0, 0, 0),
0154     BPF_MOV64_REG(BPF_REG_0, BPF_REG_1),
0155     BPF_EXIT_INSN(),
0156     },
0157     .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for",
0158     .result_unpriv = REJECT,
0159     .result = ACCEPT,
0160     .retval = 2,
0161 },
0162 {
0163     "dead code: zero extension",
0164     .insns = {
0165     BPF_MOV64_IMM(BPF_REG_0, 0),
0166     BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4),
0167     BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1),
0168     BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4),
0169     BPF_EXIT_INSN(),
0170     },
0171     .result = ACCEPT,
0172     .retval = 0,
0173 },