]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ovl: port ovl_permission() to cred guard
authorChristian Brauner <brauner@kernel.org>
Mon, 17 Nov 2025 09:33:46 +0000 (10:33 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 19 Nov 2025 20:58:21 +0000 (21:58 +0100)
Link: https://patch.msgid.link/20251117-work-ovl-cred-guard-v4-15-b31603935724@kernel.org
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/overlayfs/inode.c

index 37c56218f9ac345727fd1d29f6046f19d3ea945c..7dbf6cf2252df39a346122d368585ee6137a2cc0 100644 (file)
@@ -293,7 +293,6 @@ int ovl_permission(struct mnt_idmap *idmap,
        struct inode *upperinode = ovl_inode_upper(inode);
        struct inode *realinode;
        struct path realpath;
-       const struct cred *old_cred;
        int err;
 
        /* Careful in RCU walk mode */
@@ -311,17 +310,15 @@ int ovl_permission(struct mnt_idmap *idmap,
        if (err)
                return err;
 
-       old_cred = ovl_override_creds(inode->i_sb);
        if (!upperinode &&
            !special_file(realinode->i_mode) && mask & MAY_WRITE) {
                mask &= ~(MAY_WRITE | MAY_APPEND);
                /* Make sure mounter can read file for copy up later */
                mask |= MAY_READ;
        }
-       err = inode_permission(mnt_idmap(realpath.mnt), realinode, mask);
-       ovl_revert_creds(old_cred);
 
-       return err;
+       with_ovl_creds(inode->i_sb)
+               return inode_permission(mnt_idmap(realpath.mnt), realinode, mask);
 }
 
 static const char *ovl_get_link(struct dentry *dentry,