]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bpf: convert bpf_iter_new_fd() to FD_PREPARE()
authorChristian Brauner <brauner@kernel.org>
Sun, 23 Nov 2025 16:33:41 +0000 (17:33 +0100)
committerChristian Brauner <brauner@kernel.org>
Fri, 28 Nov 2025 11:42:33 +0000 (12:42 +0100)
Link: https://patch.msgid.link/20251123-work-fd-prepare-v4-23-b6efa1706cfd@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
kernel/bpf/bpf_iter.c

index 6ac35430c5734431339e041ffcad3a3eeaad3040..eec60b57bd3da793e11b8db5d93c3c9651c64455 100644 (file)
@@ -634,37 +634,24 @@ release_prog:
 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)