]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ovl: port ovl_fileattr_set() to cred guard
authorChristian Brauner <brauner@kernel.org>
Mon, 17 Nov 2025 09:33:51 +0000 (10:33 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 19 Nov 2025 20:58:22 +0000 (21:58 +0100)
Use the scoped ovl cred guard.

Link: https://patch.msgid.link/20251117-work-ovl-cred-guard-v4-20-b31603935724@kernel.org
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/overlayfs/inode.c

index aefdb0a27e3bbeef58e1ee2ad7bdf9e6f1b90135..53cabd948968f8ab91a70ea3b11d694b90b20241 100644 (file)
@@ -636,7 +636,6 @@ int ovl_fileattr_set(struct mnt_idmap *idmap,
 {
        struct inode *inode = d_inode(dentry);
        struct path upperpath;
-       const struct cred *old_cred;
        unsigned int flags;
        int err;
 
@@ -648,18 +647,18 @@ int ovl_fileattr_set(struct mnt_idmap *idmap,
                if (err)
                        goto out;
 
-               old_cred = ovl_override_creds(inode->i_sb);
-               /*
-                * Store immutable/append-only flags in xattr and clear them
-                * in upper fileattr (in case they were set by older kernel)
-                * so children of "ovl-immutable" directories lower aliases of
-                * "ovl-immutable" hardlinks could be copied up.
-                * Clear xattr when flags are cleared.
-                */
-               err = ovl_set_protattr(inode, upperpath.dentry, fa);
-               if (!err)
-                       err = ovl_real_fileattr_set(&upperpath, fa);
-               ovl_revert_creds(old_cred);
+               with_ovl_creds(inode->i_sb) {
+                       /*
+                        * Store immutable/append-only flags in xattr and clear them
+                        * in upper fileattr (in case they were set by older kernel)
+                        * so children of "ovl-immutable" directories lower aliases of
+                        * "ovl-immutable" hardlinks could be copied up.
+                        * Clear xattr when flags are cleared.
+                        */
+                       err = ovl_set_protattr(inode, upperpath.dentry, fa);
+                       if (!err)
+                               err = ovl_real_fileattr_set(&upperpath, fa);
+               }
                ovl_drop_write(dentry);
 
                /*