]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
chroot(2): switch to CLASS(filename)
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 14 Dec 2025 08:13:59 +0000 (03:13 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 16 Jan 2026 17:52:04 +0000 (12:52 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/open.c

index 3c70816943267062a6d60c98633c4bd388fa1a63..4adfd7e1975a8abb60950959211688258f9ecaf5 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -592,11 +592,11 @@ SYSCALL_DEFINE1(chroot, const char __user *, filename)
        struct path path;
        int error;
        unsigned int lookup_flags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY;
-       struct filename *name = getname(filename);
+       CLASS(filename, name)(filename);
 retry:
        error = filename_lookup(AT_FDCWD, name, lookup_flags, &path, NULL);
        if (error)
-               goto out;
+               return error;
 
        error = path_permission(&path, MAY_EXEC | MAY_CHDIR);
        if (error)
@@ -606,19 +606,14 @@ retry:
        if (!ns_capable(current_user_ns(), CAP_SYS_CHROOT))
                goto dput_and_out;
        error = security_path_chroot(&path);
-       if (error)
-               goto dput_and_out;
-
-       set_fs_root(current->fs, &path);
-       error = 0;
+       if (!error)
+               set_fs_root(current->fs, &path);
 dput_and_out:
        path_put(&path);
        if (retry_estale(error, lookup_flags)) {
                lookup_flags |= LOOKUP_REVAL;
                goto retry;
        }
-out:
-       putname(name);
        return error;
 }