mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
bpf: convert bpf_iter_new_fd() to FD_PREPARE()
Link: https://patch.msgid.link/20251123-work-fd-prepare-v4-23-b6efa1706cfd@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
@@ -634,37 +634,24 @@ static int prepare_seq_file(struct file *file, struct bpf_iter_link *link)
|
||||
int bpf_iter_new_fd(struct bpf_link *link)
|
||||
{
|
||||
struct bpf_iter_link *iter_link;
|
||||
struct file *file;
|
||||
unsigned int flags;
|
||||
int err, fd;
|
||||
int err;
|
||||
|
||||
if (link->ops != &bpf_iter_link_lops)
|
||||
return -EINVAL;
|
||||
|
||||
flags = O_RDONLY | O_CLOEXEC;
|
||||
fd = get_unused_fd_flags(flags);
|
||||
if (fd < 0)
|
||||
return fd;
|
||||
|
||||
file = anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags);
|
||||
if (IS_ERR(file)) {
|
||||
err = PTR_ERR(file);
|
||||
goto free_fd;
|
||||
}
|
||||
FD_PREPARE(fdf, flags, anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags));
|
||||
if (fdf.err)
|
||||
return fdf.err;
|
||||
|
||||
iter_link = container_of(link, struct bpf_iter_link, link);
|
||||
err = prepare_seq_file(file, iter_link);
|
||||
err = prepare_seq_file(fd_prepare_file(fdf), iter_link);
|
||||
if (err)
|
||||
goto free_file;
|
||||
return err; /* Automatic cleanup handles fput */
|
||||
|
||||
fd_install(fd, file);
|
||||
return fd;
|
||||
|
||||
free_file:
|
||||
fput(file);
|
||||
free_fd:
|
||||
put_unused_fd(fd);
|
||||
return err;
|
||||
return fd_publish(fdf);
|
||||
}
|
||||
|
||||
struct bpf_prog *bpf_iter_get_info(struct bpf_iter_meta *meta, bool in_stop)
|
||||
|
||||
Reference in New Issue
Block a user