| { |
| "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_KPROBE", |
| .insns = { |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns), |
| BPF_MOV64_IMM(BPF_REG_0, 0), |
| BPF_EXIT_INSN(), |
| }, |
| .errstr = "unknown func bpf_ktime_get_coarse_ns", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_KPROBE, |
| }, |
| { |
| "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_TRACEPOINT", |
| .insns = { |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns), |
| BPF_MOV64_IMM(BPF_REG_0, 0), |
| BPF_EXIT_INSN(), |
| }, |
| .errstr = "unknown func bpf_ktime_get_coarse_ns", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
| }, |
| { |
| "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_PERF_EVENT", |
| .insns = { |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns), |
| BPF_MOV64_IMM(BPF_REG_0, 0), |
| BPF_EXIT_INSN(), |
| }, |
| .errstr = "unknown func bpf_ktime_get_coarse_ns", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_PERF_EVENT, |
| }, |
| { |
| "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT", |
| .insns = { |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns), |
| BPF_MOV64_IMM(BPF_REG_0, 0), |
| BPF_EXIT_INSN(), |
| }, |
| .errstr = "unknown func bpf_ktime_get_coarse_ns", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT, |
| }, |
| { |
| "bpf_timer_init isn restricted in BPF_PROG_TYPE_KPROBE", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_LD_MAP_FD(BPF_REG_2, 0), |
| BPF_MOV64_IMM(BPF_REG_3, 1), |
| BPF_EMIT_CALL(BPF_FUNC_timer_init), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_timer = { 3, 8 }, |
| .errstr = "tracing progs cannot use bpf_timer yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_KPROBE, |
| }, |
| { |
| "bpf_timer_init is forbidden in BPF_PROG_TYPE_PERF_EVENT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_LD_MAP_FD(BPF_REG_2, 0), |
| BPF_MOV64_IMM(BPF_REG_3, 1), |
| BPF_EMIT_CALL(BPF_FUNC_timer_init), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_timer = { 3, 8 }, |
| .errstr = "tracing progs cannot use bpf_timer yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_PERF_EVENT, |
| }, |
| { |
| "bpf_timer_init is forbidden in BPF_PROG_TYPE_TRACEPOINT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_LD_MAP_FD(BPF_REG_2, 0), |
| BPF_MOV64_IMM(BPF_REG_3, 1), |
| BPF_EMIT_CALL(BPF_FUNC_timer_init), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_timer = { 3, 8 }, |
| .errstr = "tracing progs cannot use bpf_timer yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
| }, |
| { |
| "bpf_timer_init is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_LD_MAP_FD(BPF_REG_2, 0), |
| BPF_MOV64_IMM(BPF_REG_3, 1), |
| BPF_EMIT_CALL(BPF_FUNC_timer_init), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_timer = { 3, 8 }, |
| .errstr = "tracing progs cannot use bpf_timer yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT, |
| }, |
| { |
| "bpf_spin_lock is forbidden in BPF_PROG_TYPE_KPROBE", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_EMIT_CALL(BPF_FUNC_spin_lock), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_spin_lock = { 3 }, |
| .errstr = "tracing progs cannot use bpf_spin_lock yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_KPROBE, |
| }, |
| { |
| "bpf_spin_lock is forbidden in BPF_PROG_TYPE_TRACEPOINT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_EMIT_CALL(BPF_FUNC_spin_lock), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_spin_lock = { 3 }, |
| .errstr = "tracing progs cannot use bpf_spin_lock yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
| }, |
| { |
| "bpf_spin_lock is forbidden in BPF_PROG_TYPE_PERF_EVENT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_EMIT_CALL(BPF_FUNC_spin_lock), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_spin_lock = { 3 }, |
| .errstr = "tracing progs cannot use bpf_spin_lock yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_PERF_EVENT, |
| }, |
| { |
| "bpf_spin_lock is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT", |
| .insns = { |
| BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), |
| BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), |
| BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0), |
| BPF_LD_MAP_FD(BPF_REG_1, 0), |
| BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), |
| BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), |
| BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), |
| BPF_EMIT_CALL(BPF_FUNC_spin_lock), |
| BPF_EXIT_INSN(), |
| }, |
| .fixup_map_spin_lock = { 3 }, |
| .errstr = "tracing progs cannot use bpf_spin_lock yet", |
| .result = REJECT, |
| .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT, |
| }, |