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 }, 1148729226SJakub Kicinski .result = ACCEPT, 1248729226SJakub Kicinski .retval = 7, 1348729226SJakub Kicinski }, 1448729226SJakub Kicinski { 1548729226SJakub Kicinski "dead code: mid 1", 1648729226SJakub Kicinski .insns = { 1748729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 1848729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 0, 1), 1948729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 0), 2048729226SJakub Kicinski BPF_EXIT_INSN(), 2148729226SJakub Kicinski }, 2248729226SJakub Kicinski .result = ACCEPT, 2348729226SJakub Kicinski .retval = 7, 2448729226SJakub Kicinski }, 2548729226SJakub Kicinski { 2648729226SJakub Kicinski "dead code: mid 2", 2748729226SJakub Kicinski .insns = { 2848729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2948729226SJakub Kicinski BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 4), 3048729226SJakub Kicinski BPF_JMP_IMM(BPF_JSET, BPF_REG_0, 1, 1), 3148729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 2), 3248729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 3348729226SJakub Kicinski BPF_EXIT_INSN(), 3448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 1), 3548729226SJakub Kicinski BPF_EXIT_INSN(), 3648729226SJakub Kicinski }, 3748729226SJakub Kicinski .result = ACCEPT, 3848729226SJakub Kicinski .retval = 1, 3948729226SJakub Kicinski }, 4048729226SJakub Kicinski { 4148729226SJakub Kicinski "dead code: end 1", 4248729226SJakub Kicinski .insns = { 4348729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 4448729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 4548729226SJakub Kicinski BPF_EXIT_INSN(), 4648729226SJakub Kicinski BPF_EXIT_INSN(), 4748729226SJakub Kicinski }, 4848729226SJakub Kicinski .result = ACCEPT, 4948729226SJakub Kicinski .retval = 7, 5048729226SJakub Kicinski }, 5148729226SJakub Kicinski { 5248729226SJakub Kicinski "dead code: end 2", 5348729226SJakub Kicinski .insns = { 5448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 5548729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 5648729226SJakub Kicinski BPF_EXIT_INSN(), 5748729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 5848729226SJakub Kicinski BPF_EXIT_INSN(), 5948729226SJakub Kicinski }, 6048729226SJakub Kicinski .result = ACCEPT, 6148729226SJakub Kicinski .retval = 7, 6248729226SJakub Kicinski }, 6348729226SJakub Kicinski { 6448729226SJakub Kicinski "dead code: end 3", 6548729226SJakub Kicinski .insns = { 6648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 6748729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 6848729226SJakub Kicinski BPF_EXIT_INSN(), 6948729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 10, 1), 7048729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 1), 7148729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 7248729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, -5), 7348729226SJakub Kicinski }, 7448729226SJakub Kicinski .result = ACCEPT, 7548729226SJakub Kicinski .retval = 7, 7648729226SJakub Kicinski }, 7748729226SJakub Kicinski { 7848729226SJakub Kicinski "dead code: tail of main + func", 7948729226SJakub Kicinski .insns = { 8048729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 8148729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 8248729226SJakub Kicinski BPF_EXIT_INSN(), 8348729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 8448729226SJakub Kicinski BPF_EXIT_INSN(), 8548729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 8648729226SJakub Kicinski BPF_EXIT_INSN(), 8748729226SJakub Kicinski }, 88*e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 8948729226SJakub Kicinski .result_unpriv = REJECT, 9048729226SJakub Kicinski .result = ACCEPT, 9148729226SJakub Kicinski .retval = 7, 9248729226SJakub Kicinski }, 9348729226SJakub Kicinski { 9448729226SJakub Kicinski "dead code: tail of main + two functions", 9548729226SJakub Kicinski .insns = { 9648729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 9748729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_0, 8, 1), 9848729226SJakub Kicinski BPF_EXIT_INSN(), 9948729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 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_MOV64_IMM(BPF_REG_0, 12), 10448729226SJakub Kicinski BPF_EXIT_INSN(), 10548729226SJakub Kicinski }, 106*e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 10748729226SJakub Kicinski .result_unpriv = REJECT, 10848729226SJakub Kicinski .result = ACCEPT, 10948729226SJakub Kicinski .retval = 7, 11048729226SJakub Kicinski }, 11148729226SJakub Kicinski { 11248729226SJakub Kicinski "dead code: function in the middle and mid of another func", 11348729226SJakub Kicinski .insns = { 11448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 7), 11548729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 3), 11648729226SJakub Kicinski BPF_EXIT_INSN(), 11748729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 12), 11848729226SJakub Kicinski BPF_EXIT_INSN(), 11948729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_0, 7), 12048729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 7, 1), 12148729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, -5), 12248729226SJakub Kicinski BPF_EXIT_INSN(), 12348729226SJakub Kicinski }, 124*e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 12548729226SJakub Kicinski .result_unpriv = REJECT, 12648729226SJakub Kicinski .result = ACCEPT, 12748729226SJakub Kicinski .retval = 7, 12848729226SJakub Kicinski }, 12948729226SJakub Kicinski { 13048729226SJakub Kicinski "dead code: middle of main before call", 13148729226SJakub Kicinski .insns = { 13248729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 2), 13348729226SJakub Kicinski BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 2, 1), 13448729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 5), 13548729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 13648729226SJakub Kicinski BPF_EXIT_INSN(), 13748729226SJakub Kicinski BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 13848729226SJakub Kicinski BPF_EXIT_INSN(), 13948729226SJakub Kicinski }, 140*e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 14148729226SJakub Kicinski .result_unpriv = REJECT, 14248729226SJakub Kicinski .result = ACCEPT, 14348729226SJakub Kicinski .retval = 2, 14448729226SJakub Kicinski }, 14548729226SJakub Kicinski { 14648729226SJakub Kicinski "dead code: start of a function", 14748729226SJakub Kicinski .insns = { 14848729226SJakub Kicinski BPF_MOV64_IMM(BPF_REG_1, 2), 14948729226SJakub Kicinski BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 1, 0, 1), 15048729226SJakub Kicinski BPF_EXIT_INSN(), 15148729226SJakub Kicinski BPF_JMP_IMM(BPF_JA, 0, 0, 0), 15248729226SJakub Kicinski BPF_MOV64_REG(BPF_REG_0, BPF_REG_1), 15348729226SJakub Kicinski BPF_EXIT_INSN(), 15448729226SJakub Kicinski }, 155*e6ac2450SMartin KaFai Lau .errstr_unpriv = "loading/calling other bpf or kernel functions are allowed for", 15648729226SJakub Kicinski .result_unpriv = REJECT, 15748729226SJakub Kicinski .result = ACCEPT, 15848729226SJakub Kicinski .retval = 2, 15948729226SJakub Kicinski }, 160