Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bpf: trivial conversions for fdget()

fdget() is the first thing done in scope, all matching fdput() are
immediately followed by leaving the scope.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>

authored by

Al Viro and committed by
Andrii Nakryiko
eb80ee85 55f32595

+9 -21
+3 -8
kernel/bpf/btf.c
··· 7676 7676 struct btf *btf_get_by_fd(int fd) 7677 7677 { 7678 7678 struct btf *btf; 7679 - struct fd f; 7679 + CLASS(fd, f)(fd); 7680 7680 7681 - f = fdget(fd); 7682 - 7683 - if (!fd_file(f)) 7681 + if (fd_empty(f)) 7684 7682 return ERR_PTR(-EBADF); 7685 7683 7686 - if (fd_file(f)->f_op != &btf_fops) { 7687 - fdput(f); 7684 + if (fd_file(f)->f_op != &btf_fops) 7688 7685 return ERR_PTR(-EINVAL); 7689 - } 7690 7686 7691 7687 btf = fd_file(f)->private_data; 7692 7688 refcount_inc(&btf->refcnt); 7693 - fdput(f); 7694 7689 7695 7690 return btf; 7696 7691 }
+3 -7
kernel/bpf/syscall.c
··· 3187 3187 3188 3188 struct bpf_link *bpf_link_get_from_fd(u32 ufd) 3189 3189 { 3190 - struct fd f = fdget(ufd); 3190 + CLASS(fd, f)(ufd); 3191 3191 struct bpf_link *link; 3192 3192 3193 - if (!fd_file(f)) 3193 + if (fd_empty(f)) 3194 3194 return ERR_PTR(-EBADF); 3195 - if (fd_file(f)->f_op != &bpf_link_fops && fd_file(f)->f_op != &bpf_link_fops_poll) { 3196 - fdput(f); 3195 + if (fd_file(f)->f_op != &bpf_link_fops && fd_file(f)->f_op != &bpf_link_fops_poll) 3197 3196 return ERR_PTR(-EINVAL); 3198 - } 3199 3197 3200 3198 link = fd_file(f)->private_data; 3201 3199 bpf_link_inc(link); 3202 - fdput(f); 3203 - 3204 3200 return link; 3205 3201 } 3206 3202 EXPORT_SYMBOL(bpf_link_get_from_fd);
+3 -6
kernel/bpf/token.c
··· 232 232 233 233 struct bpf_token *bpf_token_get_from_fd(u32 ufd) 234 234 { 235 - struct fd f = fdget(ufd); 235 + CLASS(fd, f)(ufd); 236 236 struct bpf_token *token; 237 237 238 - if (!fd_file(f)) 238 + if (fd_empty(f)) 239 239 return ERR_PTR(-EBADF); 240 - if (fd_file(f)->f_op != &bpf_token_fops) { 241 - fdput(f); 240 + if (fd_file(f)->f_op != &bpf_token_fops) 242 241 return ERR_PTR(-EINVAL); 243 - } 244 242 245 243 token = fd_file(f)->private_data; 246 244 bpf_token_inc(token); 247 - fdput(f); 248 245 249 246 return token; 250 247 }