]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
css_set_fork(): switch to CLASS(fd_raw, ...)
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 2 Jun 2024 19:03:20 +0000 (15:03 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Nov 2024 06:28:07 +0000 (01:28 -0500)
reference acquired there by fget_raw() is not stashed anywhere -
we could as well borrow instead.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
kernel/cgroup/cgroup.c

index 8305a67ea8d99af2a9850fcafd15240ca0c0a5b8..02acc2540c46aed2d6cc03edff96c886854d0a5c 100644 (file)
@@ -6476,7 +6476,6 @@ static int cgroup_css_set_fork(struct kernel_clone_args *kargs)
        struct cgroup *dst_cgrp = NULL;
        struct css_set *cset;
        struct super_block *sb;
-       struct file *f;
 
        if (kargs->flags & CLONE_INTO_CGROUP)
                cgroup_lock();
@@ -6493,14 +6492,14 @@ static int cgroup_css_set_fork(struct kernel_clone_args *kargs)
                return 0;
        }
 
-       f = fget_raw(kargs->cgroup);
-       if (!f) {
+       CLASS(fd_raw, f)(kargs->cgroup);
+       if (fd_empty(f)) {
                ret = -EBADF;
                goto err;
        }
-       sb = f->f_path.dentry->d_sb;
+       sb = fd_file(f)->f_path.dentry->d_sb;
 
-       dst_cgrp = cgroup_get_from_file(f);
+       dst_cgrp = cgroup_get_from_file(fd_file(f));
        if (IS_ERR(dst_cgrp)) {
                ret = PTR_ERR(dst_cgrp);
                dst_cgrp = NULL;
@@ -6548,15 +6547,12 @@ static int cgroup_css_set_fork(struct kernel_clone_args *kargs)
        }
 
        put_css_set(cset);
-       fput(f);
        kargs->cgrp = dst_cgrp;
        return ret;
 
 err:
        cgroup_threadgroup_change_end(current);
        cgroup_unlock();
-       if (f)
-               fput(f);
        if (dst_cgrp)
                cgroup_put(dst_cgrp);
        put_css_set(cset);