Hi Menglong, kernel test robot noticed the following build warnings: url: https://github.com/intel-lab-lkp/linux/commits/Menglong-Dong/bpf-tracing-add-support-to-record-and-check-the-accessed-args/20240220-115317 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master patch link: https://lore.kernel.org/r/20240220035105.34626-3-dongmenglong.8%40bytedance.com patch subject: [PATCH bpf-next 2/5] bpf: tracing: support to attach program to multi hooks config: m68k-randconfig-r071-20240220 (https://download.01.org/0day-ci/archive/20240221/202402210534.siGKEfus-lkp@xxxxxxxxx/config) compiler: m68k-linux-gcc (GCC) 13.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202402210534.siGKEfus-lkp@xxxxxxxxx/ smatch warnings: kernel/bpf/syscall.c:3325 bpf_tracing_prog_attach() warn: passing zero to 'PTR_ERR' kernel/bpf/syscall.c:3485 bpf_tracing_prog_attach() error: uninitialized symbol 'link'. vim +/PTR_ERR +3325 kernel/bpf/syscall.c 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3255 static int bpf_tracing_prog_attach(struct bpf_prog *prog, 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3256 int tgt_prog_fd, 2fcc82411e74e5 Kui-Feng Lee 2022-05-10 3257 u32 btf_id, 2fcc82411e74e5 Kui-Feng Lee 2022-05-10 3258 u64 bpf_cookie) fec56f5890d93f Alexei Starovoitov 2019-11-14 3259 { a3b80e1078943d Andrii Nakryiko 2020-04-28 3260 struct bpf_link_primer link_primer; 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3261 struct bpf_prog *tgt_prog = NULL; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3262 struct bpf_trampoline *tr = NULL; 5f80eb32851d7a Menglong Dong 2024-02-20 3263 struct btf *attach_btf = NULL; 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3264 struct bpf_tracing_link *link; 5f80eb32851d7a Menglong Dong 2024-02-20 3265 struct module *mod = NULL; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3266 u64 key = 0; a3b80e1078943d Andrii Nakryiko 2020-04-28 3267 int err; fec56f5890d93f Alexei Starovoitov 2019-11-14 3268 9e4e01dfd3254c KP Singh 2020-03-29 3269 switch (prog->type) { 9e4e01dfd3254c KP Singh 2020-03-29 3270 case BPF_PROG_TYPE_TRACING: fec56f5890d93f Alexei Starovoitov 2019-11-14 3271 if (prog->expected_attach_type != BPF_TRACE_FENTRY && be8704ff07d237 Alexei Starovoitov 2020-01-20 3272 prog->expected_attach_type != BPF_TRACE_FEXIT && 9e4e01dfd3254c KP Singh 2020-03-29 3273 prog->expected_attach_type != BPF_MODIFY_RETURN) { 9e4e01dfd3254c KP Singh 2020-03-29 3274 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 3275 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 3276 } 9e4e01dfd3254c KP Singh 2020-03-29 3277 break; 9e4e01dfd3254c KP Singh 2020-03-29 3278 case BPF_PROG_TYPE_EXT: 9e4e01dfd3254c KP Singh 2020-03-29 3279 if (prog->expected_attach_type != 0) { 9e4e01dfd3254c KP Singh 2020-03-29 3280 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 3281 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 3282 } 9e4e01dfd3254c KP Singh 2020-03-29 3283 break; 9e4e01dfd3254c KP Singh 2020-03-29 3284 case BPF_PROG_TYPE_LSM: 9e4e01dfd3254c KP Singh 2020-03-29 3285 if (prog->expected_attach_type != BPF_LSM_MAC) { 9e4e01dfd3254c KP Singh 2020-03-29 3286 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 3287 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 3288 } 9e4e01dfd3254c KP Singh 2020-03-29 3289 break; 9e4e01dfd3254c KP Singh 2020-03-29 3290 default: fec56f5890d93f Alexei Starovoitov 2019-11-14 3291 err = -EINVAL; fec56f5890d93f Alexei Starovoitov 2019-11-14 3292 goto out_put_prog; fec56f5890d93f Alexei Starovoitov 2019-11-14 3293 } fec56f5890d93f Alexei Starovoitov 2019-11-14 3294 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3295 if (tgt_prog_fd) { 5f80eb32851d7a Menglong Dong 2024-02-20 3296 if (!btf_id) { 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3297 err = -EINVAL; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3298 goto out_put_prog; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3299 } 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3300 tgt_prog = bpf_prog_get(tgt_prog_fd); 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3301 if (IS_ERR(tgt_prog)) { 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3302 tgt_prog = NULL; 5f80eb32851d7a Menglong Dong 2024-02-20 3303 /* tgt_prog_fd is the fd of the kernel module BTF */ 5f80eb32851d7a Menglong Dong 2024-02-20 3304 attach_btf = btf_get_by_fd(tgt_prog_fd); 5f80eb32851d7a Menglong Dong 2024-02-20 3305 if (IS_ERR(attach_btf)) { 5f80eb32851d7a Menglong Dong 2024-02-20 3306 attach_btf = NULL; 5f80eb32851d7a Menglong Dong 2024-02-20 3307 err = -EINVAL; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3308 goto out_put_prog; 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3309 } 5f80eb32851d7a Menglong Dong 2024-02-20 3310 if (!btf_is_kernel(attach_btf)) { 5f80eb32851d7a Menglong Dong 2024-02-20 3311 btf_put(attach_btf); 5f80eb32851d7a Menglong Dong 2024-02-20 3312 err = -EOPNOTSUPP; 5f80eb32851d7a Menglong Dong 2024-02-20 3313 goto out_put_prog; 5f80eb32851d7a Menglong Dong 2024-02-20 3314 } 5f80eb32851d7a Menglong Dong 2024-02-20 3315 } else if (prog->type == BPF_PROG_TYPE_TRACING && 5f80eb32851d7a Menglong Dong 2024-02-20 3316 tgt_prog->type == BPF_PROG_TYPE_TRACING) { 5f80eb32851d7a Menglong Dong 2024-02-20 3317 prog->aux->attach_tracing_prog = true; 5f80eb32851d7a Menglong Dong 2024-02-20 3318 } 5f80eb32851d7a Menglong Dong 2024-02-20 3319 key = bpf_trampoline_compute_key(tgt_prog, attach_btf, 5f80eb32851d7a Menglong Dong 2024-02-20 3320 btf_id); 5f80eb32851d7a Menglong Dong 2024-02-20 3321 } else if (btf_id) { 5f80eb32851d7a Menglong Dong 2024-02-20 3322 attach_btf = bpf_get_btf_vmlinux(); 5f80eb32851d7a Menglong Dong 2024-02-20 3323 if (IS_ERR(attach_btf)) { 5f80eb32851d7a Menglong Dong 2024-02-20 3324 attach_btf = NULL; ^^^^^^^^^^^^^^^^^^ This needs to be done after the "err = " assignment on the next line. 5f80eb32851d7a Menglong Dong 2024-02-20 @3325 err = PTR_ERR(attach_btf); ^^^^^^^^^^^^^^^^^^^^^^^^^^ Here. 5f80eb32851d7a Menglong Dong 2024-02-20 3326 goto out_unlock; 5f80eb32851d7a Menglong Dong 2024-02-20 3327 } 5f80eb32851d7a Menglong Dong 2024-02-20 3328 if (!attach_btf) { 5f80eb32851d7a Menglong Dong 2024-02-20 3329 err = -EINVAL; 5f80eb32851d7a Menglong Dong 2024-02-20 3330 goto out_unlock; "link" is not initialized on this goto path so it leads to an uninitialized variable warning. 5f80eb32851d7a Menglong Dong 2024-02-20 3331 } 5f80eb32851d7a Menglong Dong 2024-02-20 3332 btf_get(attach_btf); 5f80eb32851d7a Menglong Dong 2024-02-20 3333 key = bpf_trampoline_compute_key(NULL, attach_btf, btf_id); 5f80eb32851d7a Menglong Dong 2024-02-20 3334 } else { 5f80eb32851d7a Menglong Dong 2024-02-20 3335 attach_btf = prog->aux->attach_btf; 5f80eb32851d7a Menglong Dong 2024-02-20 3336 /* get the reference of the btf for bpf link */ 5f80eb32851d7a Menglong Dong 2024-02-20 3337 if (attach_btf) 5f80eb32851d7a Menglong Dong 2024-02-20 3338 btf_get(attach_btf); 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3339 } 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3340 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3341 link = kzalloc(sizeof(*link), GFP_USER); 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3342 if (!link) { 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3343 err = -ENOMEM; 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3344 goto out_put_prog; 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3345 } f7e0beaf39d386 Kui-Feng Lee 2022-05-10 3346 bpf_link_init(&link->link.link, BPF_LINK_TYPE_TRACING, f2e10bff16a0fd Andrii Nakryiko 2020-04-28 3347 &bpf_tracing_link_lops, prog); f2e10bff16a0fd Andrii Nakryiko 2020-04-28 3348 link->attach_type = prog->expected_attach_type; 2fcc82411e74e5 Kui-Feng Lee 2022-05-10 3349 link->link.cookie = bpf_cookie; 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 3350 [ snip ] 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3474 prog->aux->dst_trampoline = NULL; 5f80eb32851d7a Menglong Dong 2024-02-20 3475 prog->aux->mod = NULL; 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3476 mutex_unlock(&prog->aux->dst_mutex); 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3477 a3b80e1078943d Andrii Nakryiko 2020-04-28 3478 return bpf_link_settle(&link_primer); 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3479 out_unlock: 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3480 if (tr && tr != prog->aux->dst_trampoline) 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3481 bpf_trampoline_put(tr); 5f80eb32851d7a Menglong Dong 2024-02-20 3482 if (mod && mod != prog->aux->mod) 5f80eb32851d7a Menglong Dong 2024-02-20 3483 module_put(mod); 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 3484 mutex_unlock(&prog->aux->dst_mutex); 3aac1ead5eb6b7 Toke Høiland-Jørgensen 2020-09-29 @3485 kfree(link); ^^^^ fec56f5890d93f Alexei Starovoitov 2019-11-14 3486 out_put_prog: 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3487 if (tgt_prog_fd && tgt_prog) 4a1e7c0c63e02d Toke Høiland-Jørgensen 2020-09-29 3488 bpf_prog_put(tgt_prog); 5f80eb32851d7a Menglong Dong 2024-02-20 3489 btf_put(attach_btf); fec56f5890d93f Alexei Starovoitov 2019-11-14 3490 return err; fec56f5890d93f Alexei Starovoitov 2019-11-14 3491 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki