1

bpf: more trivial fdget() conversions

All failure exits prior to fdget() leave the 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>
This commit is contained in:
Al Viro 2024-07-30 01:16:10 -04:00 committed by Andrii Nakryiko
parent eb80ee8580
commit eceb7b33e5

View File

@ -4901,33 +4901,25 @@ static int bpf_link_get_info_by_fd(struct file *file,
static int bpf_obj_get_info_by_fd(const union bpf_attr *attr, static int bpf_obj_get_info_by_fd(const union bpf_attr *attr,
union bpf_attr __user *uattr) union bpf_attr __user *uattr)
{ {
int ufd = attr->info.bpf_fd;
struct fd f;
int err;
if (CHECK_ATTR(BPF_OBJ_GET_INFO_BY_FD)) if (CHECK_ATTR(BPF_OBJ_GET_INFO_BY_FD))
return -EINVAL; return -EINVAL;
f = fdget(ufd); CLASS(fd, f)(attr->info.bpf_fd);
if (!fd_file(f)) if (fd_empty(f))
return -EBADFD; return -EBADFD;
if (fd_file(f)->f_op == &bpf_prog_fops) if (fd_file(f)->f_op == &bpf_prog_fops)
err = bpf_prog_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr, return bpf_prog_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr,
uattr); uattr);
else if (fd_file(f)->f_op == &bpf_map_fops) else if (fd_file(f)->f_op == &bpf_map_fops)
err = bpf_map_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr, return bpf_map_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr,
uattr); uattr);
else if (fd_file(f)->f_op == &btf_fops) else if (fd_file(f)->f_op == &btf_fops)
err = bpf_btf_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr, uattr); return bpf_btf_get_info_by_fd(fd_file(f), fd_file(f)->private_data, attr, uattr);
else if (fd_file(f)->f_op == &bpf_link_fops || fd_file(f)->f_op == &bpf_link_fops_poll) else if (fd_file(f)->f_op == &bpf_link_fops || fd_file(f)->f_op == &bpf_link_fops_poll)
err = bpf_link_get_info_by_fd(fd_file(f), fd_file(f)->private_data, return bpf_link_get_info_by_fd(fd_file(f), fd_file(f)->private_data,
attr, uattr); attr, uattr);
else return -EINVAL;
err = -EINVAL;
fdput(f);
return err;
} }
#define BPF_BTF_LOAD_LAST_FIELD btf_token_fd #define BPF_BTF_LOAD_LAST_FIELD btf_token_fd