]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ovl: port ovl_copy_up_workdir() to cred guard
authorChristian Brauner <brauner@kernel.org>
Wed, 19 Nov 2025 19:27:21 +0000 (20:27 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 19 Nov 2025 20:58:27 +0000 (21:58 +0100)
Remove the complicated struct ovl_cu_creds dance and use our new copy up
cred guard.

Link: https://patch.msgid.link/20251114-work-ovl-cred-guard-copyup-v1-2-ea3fb15cf427@kernel.org
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/overlayfs/copy_up.c

index a7f70dadf94f5432b0703531a3c30f581cf77593..28fdbf131db608519eabf94e37a44bb1de6c543a 100644 (file)
@@ -790,7 +790,6 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)
        struct path path = { .mnt = ovl_upper_mnt(ofs) };
        struct renamedata rd = {};
        struct dentry *temp;
-       struct ovl_cu_creds cc;
        int err;
        struct ovl_cattr cattr = {
                /* Can't properly set mode on creation because of the umask */
@@ -799,14 +798,14 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)
                .link = c->link
        };
 
-       err = ovl_prep_cu_creds(c->dentry, &cc);
-       if (err)
-               return err;
+       scoped_class(copy_up_creds, copy_up_creds, c->dentry) {
+               if (IS_ERR(copy_up_creds))
+                       return PTR_ERR(copy_up_creds);
 
-       ovl_start_write(c->dentry);
-       temp = ovl_create_temp(ofs, c->workdir, &cattr);
-       ovl_end_write(c->dentry);
-       ovl_revert_cu_creds(&cc);
+               ovl_start_write(c->dentry);
+               temp = ovl_create_temp(ofs, c->workdir, &cattr);
+               ovl_end_write(c->dentry);
+       }
 
        if (IS_ERR(temp))
                return PTR_ERR(temp);