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/[email protected]/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 <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

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


Reply via email to