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

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

index a3e54db441bd316adb7a8ab88477ecb909b70581..28b2f707cfbc110dc2daa491c2c15d5029466abd 100644 (file)
@@ -1540,8 +1540,6 @@ out_free_oe:
 int ovl_fill_super(struct super_block *sb, struct fs_context *fc)
 {
        struct ovl_fs *ofs = sb->s_fs_info;
-       const struct cred *old_cred = NULL;
-       struct cred *cred;
        int err;
 
        err = -EIO;
@@ -1550,19 +1548,15 @@ int ovl_fill_super(struct super_block *sb, struct fs_context *fc)
 
        ovl_set_d_op(sb);
 
-       err = -ENOMEM;
-       if (!ofs->creator_cred)
-               ofs->creator_cred = cred = prepare_creds();
-       else
-               cred = (struct cred *)ofs->creator_cred;
-       if (!cred)
-               goto out_err;
-
-       old_cred = ovl_override_creds(sb);
-
-       err = ovl_fill_super_creds(fc, sb);
+       if (!ofs->creator_cred) {
+               err = -ENOMEM;
+               ofs->creator_cred = prepare_creds();
+               if (!ofs->creator_cred)
+                       goto out_err;
+       }
 
-       ovl_revert_creds(old_cred);
+       with_ovl_creds(sb)
+               err = ovl_fill_super_creds(fc, sb);
 
 out_err:
        if (err) {