0001 {
0002 "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_KPROBE",
0003 .insns = {
0004 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns),
0005 BPF_MOV64_IMM(BPF_REG_0, 0),
0006 BPF_EXIT_INSN(),
0007 },
0008 .errstr = "unknown func bpf_ktime_get_coarse_ns",
0009 .result = REJECT,
0010 .prog_type = BPF_PROG_TYPE_KPROBE,
0011 },
0012 {
0013 "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_TRACEPOINT",
0014 .insns = {
0015 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns),
0016 BPF_MOV64_IMM(BPF_REG_0, 0),
0017 BPF_EXIT_INSN(),
0018 },
0019 .errstr = "unknown func bpf_ktime_get_coarse_ns",
0020 .result = REJECT,
0021 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
0022 },
0023 {
0024 "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_PERF_EVENT",
0025 .insns = {
0026 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns),
0027 BPF_MOV64_IMM(BPF_REG_0, 0),
0028 BPF_EXIT_INSN(),
0029 },
0030 .errstr = "unknown func bpf_ktime_get_coarse_ns",
0031 .result = REJECT,
0032 .prog_type = BPF_PROG_TYPE_PERF_EVENT,
0033 },
0034 {
0035 "bpf_ktime_get_coarse_ns is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT",
0036 .insns = {
0037 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_ktime_get_coarse_ns),
0038 BPF_MOV64_IMM(BPF_REG_0, 0),
0039 BPF_EXIT_INSN(),
0040 },
0041 .errstr = "unknown func bpf_ktime_get_coarse_ns",
0042 .result = REJECT,
0043 .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT,
0044 },
0045 {
0046 "bpf_timer_init isn restricted in BPF_PROG_TYPE_KPROBE",
0047 .insns = {
0048 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0049 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0050 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0051 BPF_LD_MAP_FD(BPF_REG_1, 0),
0052 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0053 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
0054 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0055 BPF_LD_MAP_FD(BPF_REG_2, 0),
0056 BPF_MOV64_IMM(BPF_REG_3, 1),
0057 BPF_EMIT_CALL(BPF_FUNC_timer_init),
0058 BPF_EXIT_INSN(),
0059 },
0060 .fixup_map_timer = { 3, 8 },
0061 .errstr = "tracing progs cannot use bpf_timer yet",
0062 .result = REJECT,
0063 .prog_type = BPF_PROG_TYPE_KPROBE,
0064 },
0065 {
0066 "bpf_timer_init is forbidden in BPF_PROG_TYPE_PERF_EVENT",
0067 .insns = {
0068 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0069 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0070 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0071 BPF_LD_MAP_FD(BPF_REG_1, 0),
0072 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0073 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
0074 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0075 BPF_LD_MAP_FD(BPF_REG_2, 0),
0076 BPF_MOV64_IMM(BPF_REG_3, 1),
0077 BPF_EMIT_CALL(BPF_FUNC_timer_init),
0078 BPF_EXIT_INSN(),
0079 },
0080 .fixup_map_timer = { 3, 8 },
0081 .errstr = "tracing progs cannot use bpf_timer yet",
0082 .result = REJECT,
0083 .prog_type = BPF_PROG_TYPE_PERF_EVENT,
0084 },
0085 {
0086 "bpf_timer_init is forbidden in BPF_PROG_TYPE_TRACEPOINT",
0087 .insns = {
0088 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0089 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0090 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0091 BPF_LD_MAP_FD(BPF_REG_1, 0),
0092 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0093 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
0094 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0095 BPF_LD_MAP_FD(BPF_REG_2, 0),
0096 BPF_MOV64_IMM(BPF_REG_3, 1),
0097 BPF_EMIT_CALL(BPF_FUNC_timer_init),
0098 BPF_EXIT_INSN(),
0099 },
0100 .fixup_map_timer = { 3, 8 },
0101 .errstr = "tracing progs cannot use bpf_timer yet",
0102 .result = REJECT,
0103 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
0104 },
0105 {
0106 "bpf_timer_init is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT",
0107 .insns = {
0108 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0109 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0110 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0111 BPF_LD_MAP_FD(BPF_REG_1, 0),
0112 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0113 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
0114 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0115 BPF_LD_MAP_FD(BPF_REG_2, 0),
0116 BPF_MOV64_IMM(BPF_REG_3, 1),
0117 BPF_EMIT_CALL(BPF_FUNC_timer_init),
0118 BPF_EXIT_INSN(),
0119 },
0120 .fixup_map_timer = { 3, 8 },
0121 .errstr = "tracing progs cannot use bpf_timer yet",
0122 .result = REJECT,
0123 .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT,
0124 },
0125 {
0126 "bpf_spin_lock is forbidden in BPF_PROG_TYPE_KPROBE",
0127 .insns = {
0128 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0129 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0130 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0131 BPF_LD_MAP_FD(BPF_REG_1, 0),
0132 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0133 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0134 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0135 BPF_EMIT_CALL(BPF_FUNC_spin_lock),
0136 BPF_EXIT_INSN(),
0137 },
0138 .fixup_map_spin_lock = { 3 },
0139 .errstr = "tracing progs cannot use bpf_spin_lock yet",
0140 .result = REJECT,
0141 .prog_type = BPF_PROG_TYPE_KPROBE,
0142 },
0143 {
0144 "bpf_spin_lock is forbidden in BPF_PROG_TYPE_TRACEPOINT",
0145 .insns = {
0146 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0147 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0148 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0149 BPF_LD_MAP_FD(BPF_REG_1, 0),
0150 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0151 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0152 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0153 BPF_EMIT_CALL(BPF_FUNC_spin_lock),
0154 BPF_EXIT_INSN(),
0155 },
0156 .fixup_map_spin_lock = { 3 },
0157 .errstr = "tracing progs cannot use bpf_spin_lock yet",
0158 .result = REJECT,
0159 .prog_type = BPF_PROG_TYPE_TRACEPOINT,
0160 },
0161 {
0162 "bpf_spin_lock is forbidden in BPF_PROG_TYPE_PERF_EVENT",
0163 .insns = {
0164 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0165 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0166 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0167 BPF_LD_MAP_FD(BPF_REG_1, 0),
0168 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0169 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0170 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0171 BPF_EMIT_CALL(BPF_FUNC_spin_lock),
0172 BPF_EXIT_INSN(),
0173 },
0174 .fixup_map_spin_lock = { 3 },
0175 .errstr = "tracing progs cannot use bpf_spin_lock yet",
0176 .result = REJECT,
0177 .prog_type = BPF_PROG_TYPE_PERF_EVENT,
0178 },
0179 {
0180 "bpf_spin_lock is forbidden in BPF_PROG_TYPE_RAW_TRACEPOINT",
0181 .insns = {
0182 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0183 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0184 BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
0185 BPF_LD_MAP_FD(BPF_REG_1, 0),
0186 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
0187 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2),
0188 BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
0189 BPF_EMIT_CALL(BPF_FUNC_spin_lock),
0190 BPF_EXIT_INSN(),
0191 },
0192 .fixup_map_spin_lock = { 3 },
0193 .errstr = "tracing progs cannot use bpf_spin_lock yet",
0194 .result = REJECT,
0195 .prog_type = BPF_PROG_TYPE_RAW_TRACEPOINT,
0196 },