CC: kbuild-all(a)lists.01.org In-Reply-To: <160106910487.27725.11983967672504271627.stgit@toke.dk> References: <160106910487.27725.11983967672504271627.stgit@toke.dk> TO: "Toke Høiland-Jørgensen" Hi "Toke, I love your patch! Perhaps something to improve: [auto build test WARNING on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/bpf-Support-multi-attach-for-freplace-programs/20200926-052738 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master :::::: branch date: 6 hours ago :::::: commit date: 6 hours ago config: x86_64-randconfig-m001-20200925 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: kernel/bpf/verifier.c:11378 bpf_check_attach_target() error: we previously assumed 'dst_prog' could be null (see line 11250) vim +/dst_prog +11378 kernel/bpf/verifier.c 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11214 f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11215 int bpf_check_attach_target(struct bpf_verifier_log *log, f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11216 const struct bpf_prog *prog, 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11217 const struct bpf_prog *dst_prog, f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11218 u32 btf_id, f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11219 struct bpf_attach_target_info *tgt_info) 38207291604401 Martin KaFai Lau 2019-10-24 11220 { be8704ff07d237 Alexei Starovoitov 2020-01-20 11221 bool prog_extension = prog->type == BPF_PROG_TYPE_EXT; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11222 const char prefix[] = "btf_trace_"; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11223 int ret = 0, subprog = -1, i; 38207291604401 Martin KaFai Lau 2019-10-24 11224 const struct btf_type *t; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11225 bool conservative = true; 38207291604401 Martin KaFai Lau 2019-10-24 11226 const char *tname; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11227 struct btf *btf; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11228 long addr = 0; 38207291604401 Martin KaFai Lau 2019-10-24 11229 f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11230 if (!btf_id) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11231 bpf_log(log, "Tracing programs must provide btf_id\n"); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11232 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11233 } 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11234 btf = dst_prog ? dst_prog->aux->btf : btf_vmlinux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11235 if (!btf) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11236 bpf_log(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11237 "FENTRY/FEXIT program can only be attached to another program annotated with BTF\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11238 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11239 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11240 t = btf_type_by_id(btf, btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11241 if (!t) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11242 bpf_log(log, "attach_btf_id %u is invalid\n", btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11243 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11244 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11245 tname = btf_name_by_offset(btf, t->name_off); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11246 if (!tname) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11247 bpf_log(log, "attach_btf_id %u doesn't have a name\n", btf_id); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11248 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11249 } 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 @11250 if (dst_prog) { 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11251 struct bpf_prog_aux *aux = dst_prog->aux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11252 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11253 for (i = 0; i < aux->func_info_cnt; i++) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11254 if (aux->func_info[i].type_id == btf_id) { 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11255 subprog = i; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11256 break; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11257 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11258 if (subprog == -1) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11259 bpf_log(log, "Subprog %s doesn't exist\n", tname); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11260 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11261 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11262 conservative = aux->func_info_aux[subprog].unreliable; be8704ff07d237 Alexei Starovoitov 2020-01-20 11263 if (prog_extension) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11264 if (conservative) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11265 bpf_log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11266 "Cannot replace static functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11267 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11268 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11269 if (!prog->jit_requested) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11270 bpf_log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11271 "Extension programs should be JITed\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11272 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11273 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11274 } 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11275 if (!dst_prog->jited) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11276 bpf_log(log, "Can attach to only JITed progs\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11277 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11278 } 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11279 if (dst_prog->type == prog->type) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11280 /* Cannot fentry/fexit another fentry/fexit program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11281 * Cannot attach program extension to another extension. be8704ff07d237 Alexei Starovoitov 2020-01-20 11282 * It's ok to attach fentry/fexit to extension program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11283 */ afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11284 bpf_log(log, "Cannot recursively attach\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11285 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11286 } 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11287 if (dst_prog->type == BPF_PROG_TYPE_TRACING && be8704ff07d237 Alexei Starovoitov 2020-01-20 11288 prog_extension && 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11289 (dst_prog->expected_attach_type == BPF_TRACE_FENTRY || 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11290 dst_prog->expected_attach_type == BPF_TRACE_FEXIT)) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11291 /* Program extensions can extend all program types be8704ff07d237 Alexei Starovoitov 2020-01-20 11292 * except fentry/fexit. The reason is the following. be8704ff07d237 Alexei Starovoitov 2020-01-20 11293 * The fentry/fexit programs are used for performance be8704ff07d237 Alexei Starovoitov 2020-01-20 11294 * analysis, stats and can be attached to any program be8704ff07d237 Alexei Starovoitov 2020-01-20 11295 * type except themselves. When extension program is be8704ff07d237 Alexei Starovoitov 2020-01-20 11296 * replacing XDP function it is necessary to allow be8704ff07d237 Alexei Starovoitov 2020-01-20 11297 * performance analysis of all functions. Both original be8704ff07d237 Alexei Starovoitov 2020-01-20 11298 * XDP program and its program extension. Hence be8704ff07d237 Alexei Starovoitov 2020-01-20 11299 * attaching fentry/fexit to BPF_PROG_TYPE_EXT is be8704ff07d237 Alexei Starovoitov 2020-01-20 11300 * allowed. If extending of fentry/fexit was allowed it be8704ff07d237 Alexei Starovoitov 2020-01-20 11301 * would be possible to create long call chain be8704ff07d237 Alexei Starovoitov 2020-01-20 11302 * fentry->extension->fentry->extension beyond be8704ff07d237 Alexei Starovoitov 2020-01-20 11303 * reasonable stack size. Hence extending fentry is not be8704ff07d237 Alexei Starovoitov 2020-01-20 11304 * allowed. be8704ff07d237 Alexei Starovoitov 2020-01-20 11305 */ afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11306 bpf_log(log, "Cannot extend fentry/fexit\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11307 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11308 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11309 } else { be8704ff07d237 Alexei Starovoitov 2020-01-20 11310 if (prog_extension) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11311 bpf_log(log, "Cannot replace kernel functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11312 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11313 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11314 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11315 f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11316 switch (prog->expected_attach_type) { f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11317 case BPF_TRACE_RAW_TP: 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11318 if (dst_prog) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11319 bpf_log(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11320 "Only FENTRY/FEXIT progs are attachable to another BPF prog\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11321 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11322 } 38207291604401 Martin KaFai Lau 2019-10-24 11323 if (!btf_type_is_typedef(t)) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11324 bpf_log(log, "attach_btf_id %u is not a typedef\n", 38207291604401 Martin KaFai Lau 2019-10-24 11325 btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11326 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11327 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11328 if (strncmp(prefix, tname, sizeof(prefix) - 1)) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11329 bpf_log(log, "attach_btf_id %u points to wrong type name %s\n", 38207291604401 Martin KaFai Lau 2019-10-24 11330 btf_id, tname); 38207291604401 Martin KaFai Lau 2019-10-24 11331 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11332 } 38207291604401 Martin KaFai Lau 2019-10-24 11333 tname += sizeof(prefix) - 1; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11334 t = btf_type_by_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11335 if (!btf_type_is_ptr(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11336 /* should never happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11337 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11338 t = btf_type_by_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11339 if (!btf_type_is_func_proto(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11340 /* should never happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11341 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11342 f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11343 break; 15d83c4d7cef5c Yonghong Song 2020-05-09 11344 case BPF_TRACE_ITER: 15d83c4d7cef5c Yonghong Song 2020-05-09 11345 if (!btf_type_is_func(t)) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11346 bpf_log(log, "attach_btf_id %u is not a function\n", 15d83c4d7cef5c Yonghong Song 2020-05-09 11347 btf_id); 15d83c4d7cef5c Yonghong Song 2020-05-09 11348 return -EINVAL; 15d83c4d7cef5c Yonghong Song 2020-05-09 11349 } 15d83c4d7cef5c Yonghong Song 2020-05-09 11350 t = btf_type_by_id(btf, t->type); 15d83c4d7cef5c Yonghong Song 2020-05-09 11351 if (!btf_type_is_func_proto(t)) 15d83c4d7cef5c Yonghong Song 2020-05-09 11352 return -EINVAL; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11353 ret = btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11354 if (ret) 15d83c4d7cef5c Yonghong Song 2020-05-09 11355 return ret; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11356 break; be8704ff07d237 Alexei Starovoitov 2020-01-20 11357 default: be8704ff07d237 Alexei Starovoitov 2020-01-20 11358 if (!prog_extension) be8704ff07d237 Alexei Starovoitov 2020-01-20 11359 return -EINVAL; df561f6688fef7 Gustavo A. R. Silva 2020-08-23 11360 fallthrough; ae24082331d9bb KP Singh 2020-03-04 11361 case BPF_MODIFY_RETURN: 9e4e01dfd3254c KP Singh 2020-03-29 11362 case BPF_LSM_MAC: fec56f5890d93f Alexei Starovoitov 2019-11-14 11363 case BPF_TRACE_FENTRY: fec56f5890d93f Alexei Starovoitov 2019-11-14 11364 case BPF_TRACE_FEXIT: fec56f5890d93f Alexei Starovoitov 2019-11-14 11365 if (!btf_type_is_func(t)) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11366 bpf_log(log, "attach_btf_id %u is not a function\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11367 btf_id); fec56f5890d93f Alexei Starovoitov 2019-11-14 11368 return -EINVAL; fec56f5890d93f Alexei Starovoitov 2019-11-14 11369 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11370 if (prog_extension && afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11371 btf_check_type_match(log, prog, btf, t)) be8704ff07d237 Alexei Starovoitov 2020-01-20 11372 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11373 t = btf_type_by_id(btf, t->type); fec56f5890d93f Alexei Starovoitov 2019-11-14 11374 if (!btf_type_is_func_proto(t)) fec56f5890d93f Alexei Starovoitov 2019-11-14 11375 return -EINVAL; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11376 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11377 if ((prog->aux->saved_dst_prog_type && 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 @11378 prog->aux->saved_dst_prog_type != dst_prog->type) || 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11379 (prog->aux->saved_dst_attach_type && 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11380 prog->aux->saved_dst_attach_type != dst_prog->expected_attach_type)) 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11381 return -EINVAL; 7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11382 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11383 if (dst_prog && conservative) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11384 t = NULL; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11385 f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11386 ret = btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); fec56f5890d93f Alexei Starovoitov 2019-11-14 11387 if (ret < 0) f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11388 return ret; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11389 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11390 if (dst_prog) { e9eeec58c992c4 Yonghong Song 2019-12-04 11391 if (subprog == 0) 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11392 addr = (long) dst_prog->bpf_func; e9eeec58c992c4 Yonghong Song 2019-12-04 11393 else 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11394 addr = (long) dst_prog->aux->func[subprog]->bpf_func; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11395 } else { fec56f5890d93f Alexei Starovoitov 2019-11-14 11396 addr = kallsyms_lookup_name(tname); fec56f5890d93f Alexei Starovoitov 2019-11-14 11397 if (!addr) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11398 bpf_log(log, fec56f5890d93f Alexei Starovoitov 2019-11-14 11399 "The address of function %s cannot be found\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11400 tname); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11401 return -ENOENT; fec56f5890d93f Alexei Starovoitov 2019-11-14 11402 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11403 } 18644cec714aab Alexei Starovoitov 2020-05-28 11404 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11405 if (prog->aux->sleepable) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11406 ret = -EINVAL; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11407 switch (prog->type) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11408 case BPF_PROG_TYPE_TRACING: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11409 /* fentry/fexit/fmod_ret progs can be sleepable only if they are 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11410 * attached to ALLOW_ERROR_INJECTION and are not in denylist. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11411 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11412 if (!check_non_sleepable_error_inject(btf_id) && 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11413 within_error_injection_list(addr)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11414 ret = 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11415 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11416 case BPF_PROG_TYPE_LSM: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11417 /* LSM progs check that they are attached to bpf_lsm_*() funcs. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11418 * Only some of them are sleepable. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11419 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11420 if (check_sleepable_lsm_hook(btf_id)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11421 ret = 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11422 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11423 default: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11424 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11425 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11426 if (ret) { f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11427 bpf_log(log, "%s is not sleepable\n", tname); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11428 return ret; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11429 } 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11430 } else if (prog->expected_attach_type == BPF_MODIFY_RETURN) { 0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11431 if (dst_prog) { afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11432 bpf_log(log, "can't modify return codes of BPF programs\n"); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11433 return -EINVAL; 81a09cc12e4a91 Toke Høiland-Jørgensen 2020-09-25 11434 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11435 ret = check_attach_modify_return(addr, tname); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11436 if (ret) { f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11437 bpf_log(log, "%s() is not modifiable\n", tname); f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11438 return ret; 18644cec714aab Alexei Starovoitov 2020-05-28 11439 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11440 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11441 f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11442 break; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11443 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11444 tgt_info->tgt_addr = addr; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11445 tgt_info->tgt_name = tname; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11446 tgt_info->tgt_type = t; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11447 return 0; f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11448 } f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11449 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org