{ "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, },