148729226SJakub Kicinski { 248729226SJakub Kicinski "dead code: start", 348729226SJakub Kicinski .insns = { 448729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 2), 548729226SJakub Kicinski BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0), 648729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 2), 748729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 848729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, -4), 948729226SJakub Kicinski BPF_EXIT_INSN(), 1048729226SJakub Kicinski }, 11973377ffSDaniel Borkmann .errstr_unpriv = "R9 !read_ok", 12973377ffSDaniel Borkmann .result_unpriv = REJECT, 1348729226SJakub Kicinski .result = ACCEPT, 1448729226SJakub Kicinski .retval = 7, 1548729226SJakub Kicinski }, 1648729226SJakub Kicinski { 1748729226SJakub Kicinski "dead code: mid 1", 1848729226SJakub Kicinski .insns = { 1948729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 2048729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1), 2148729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0), 2248729226SJakub Kicinski BPF_EXIT_INSN(), 2348729226SJakub Kicinski }, 2448729226SJakub Kicinski .result = ACCEPT, 2548729226SJakub Kicinski .retval = 7, 2648729226SJakub Kicinski }, 2748729226SJakub Kicinski { 2848729226SJakub Kicinski "dead code: mid 2", 2948729226SJakub Kicinski .insns = { 3048729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3148729226SJakub Kicinski BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4), 3248729226SJakub Kicinski BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1), 3348729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 2), 3448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 3548729226SJakub Kicinski BPF_EXIT_INSN(), 3648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 1), 3748729226SJakub Kicinski BPF_EXIT_INSN(), 3848729226SJakub Kicinski }, 3948729226SJakub Kicinski .result = ACCEPT, 4048729226SJakub Kicinski .retval = 1, 4148729226SJakub Kicinski }, 4248729226SJakub Kicinski { 4348729226SJakub Kicinski "dead code: end 1", 4448729226SJakub Kicinski .insns = { 4548729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 4648729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 4748729226SJakub Kicinski BPF_EXIT_INSN(), 4848729226SJakub Kicinski BPF_EXIT_INSN(), 4948729226SJakub Kicinski }, 5048729226SJakub Kicinski .result = ACCEPT, 5148729226SJakub Kicinski .retval = 7, 5248729226SJakub Kicinski }, 5348729226SJakub Kicinski { 5448729226SJakub Kicinski "dead code: end 2", 5548729226SJakub Kicinski .insns = { 5648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 5748729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 5848729226SJakub Kicinski BPF_EXIT_INSN(), 5948729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 6048729226SJakub Kicinski BPF_EXIT_INSN(), 6148729226SJakub Kicinski }, 6248729226SJakub Kicinski .result = ACCEPT, 6348729226SJakub Kicinski .retval = 7, 6448729226SJakub Kicinski }, 6548729226SJakub Kicinski { 6648729226SJakub Kicinski "dead code: end 3", 6748729226SJakub Kicinski .insns = { 6848729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 6948729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 7048729226SJakub Kicinski BPF_EXIT_INSN(), 7148729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 7248729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 1), 7348729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 7448729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, -5), 7548729226SJakub Kicinski }, 7648729226SJakub Kicinski .result = ACCEPT, 7748729226SJakub Kicinski .retval = 7, 7848729226SJakub Kicinski }, 7948729226SJakub Kicinski { 8048729226SJakub Kicinski "dead code: tail of main + func", 8148729226SJakub Kicinski .insns = { 8248729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 8348729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 8448729226SJakub Kicinski BPF_EXIT_INSN(), 8548729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 8648729226SJakub Kicinski BPF_EXIT_INSN(), 8748729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 8848729226SJakub Kicinski BPF_EXIT_INSN(), 8948729226SJakub Kicinski }, 90e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 9148729226SJakub Kicinski .result_unpriv = REJECT, 9248729226SJakub Kicinski .result = ACCEPT, 9348729226SJakub Kicinski .retval = 7, 9448729226SJakub Kicinski }, 9548729226SJakub Kicinski { 9648729226SJakub Kicinski "dead code: tail of main + two functions", 9748729226SJakub Kicinski .insns = { 9848729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 9948729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 10048729226SJakub Kicinski BPF_EXIT_INSN(), 10148729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 10248729226SJakub Kicinski BPF_EXIT_INSN(), 10348729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 10448729226SJakub Kicinski BPF_EXIT_INSN(), 10548729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 10648729226SJakub Kicinski BPF_EXIT_INSN(), 10748729226SJakub Kicinski }, 108e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 10948729226SJakub Kicinski .result_unpriv = REJECT, 11048729226SJakub Kicinski .result = ACCEPT, 11148729226SJakub Kicinski .retval = 7, 11248729226SJakub Kicinski }, 11348729226SJakub Kicinski { 11448729226SJakub Kicinski "dead code: function in the middle and mid of another func", 11548729226SJakub Kicinski .insns = { 11648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 7), 11748729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3), 11848729226SJakub Kicinski BPF_EXIT_INSN(), 11948729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 12048729226SJakub Kicinski BPF_EXIT_INSN(), 12148729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 12248729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1), 12348729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5), 12448729226SJakub Kicinski BPF_EXIT_INSN(), 12548729226SJakub Kicinski }, 126e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 12748729226SJakub Kicinski .result_unpriv = REJECT, 12848729226SJakub Kicinski .result = ACCEPT, 12948729226SJakub Kicinski .retval = 7, 13048729226SJakub Kicinski }, 13148729226SJakub Kicinski { 13248729226SJakub Kicinski "dead code: middle of main before call", 13348729226SJakub Kicinski .insns = { 13448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 2), 13548729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1), 13648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 5), 13748729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 13848729226SJakub Kicinski BPF_EXIT_INSN(), 13948729226SJakub Kicinski BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 14048729226SJakub Kicinski BPF_EXIT_INSN(), 14148729226SJakub Kicinski }, 142e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 14348729226SJakub Kicinski .result_unpriv = REJECT, 14448729226SJakub Kicinski .result = ACCEPT, 14548729226SJakub Kicinski .retval = 2, 14648729226SJakub Kicinski }, 14748729226SJakub Kicinski { 14848729226SJakub Kicinski "dead code: start of a function", 14948729226SJakub Kicinski .insns = { 15048729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 2), 15148729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 15248729226SJakub Kicinski BPF_EXIT_INSN(), 15348729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 0), 15448729226SJakub Kicinski BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 15548729226SJakub Kicinski BPF_EXIT_INSN(), 15648729226SJakub Kicinski }, 157e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 15848729226SJakub Kicinski .result_unpriv = REJECT, 15948729226SJakub Kicinski .result = ACCEPT, 16048729226SJakub Kicinski .retval = 2, 16148729226SJakub Kicinski }, 162*3776f351SIlya Leoshkevich { 163*3776f351SIlya Leoshkevich "dead code: zero extension", 164*3776f351SIlya Leoshkevich .insns = { 165*3776f351SIlya Leoshkevich BPF_MOV64_IMM(BPF_REG_0, 0), 166*3776f351SIlya Leoshkevich BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4), 167*3776f351SIlya Leoshkevich BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1), 168*3776f351SIlya Leoshkevich BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_10, -4), 169*3776f351SIlya Leoshkevich BPF_EXIT_INSN(), 170*3776f351SIlya Leoshkevich }, 171*3776f351SIlya Leoshkevich .result = ACCEPT, 172*3776f351SIlya Leoshkevich .retval = 0, 173*3776f351SIlya Leoshkevich }, 174