summaryrefslogtreecommitdiff
path: root/fs/overlayfs
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2025-11-19 20:53:17 +0100
committerChristian Brauner <brauner@kernel.org>2025-11-19 21:58:24 +0100
commitca0c657f258089cbb7b6d269cf91936ab83dac3f (patch)
tree6dd5662a6a6782f9f1cb19466357e8167373d8e1 /fs/overlayfs
parenta1da8401987e671ac18720eb26c7ee52e79e3d4c (diff)
ovl: port ovl_rename() to cred guard
Use the scoped ovl cred guard. Link: https://patch.msgid.link/20251117-work-ovl-cred-guard-v4-35-b31603935724@kernel.org Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/overlayfs')
-rw-r--r--fs/overlayfs/dir.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index ab1fdd7ccb2e..8e8ede6a1217 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -1319,7 +1319,6 @@ static int ovl_rename(struct mnt_idmap *idmap, struct inode *olddir,
struct dentry *old, struct inode *newdir,
struct dentry *new, unsigned int flags)
{
- const struct cred *old_cred = NULL;
struct ovl_renamedata ovlrd = {
.old_parent = old->d_parent,
.old_dentry = old,
@@ -1332,17 +1331,13 @@ static int ovl_rename(struct mnt_idmap *idmap, struct inode *olddir,
int err;
err = ovl_rename_start(&ovlrd, &list);
- if (err)
- goto out;
-
- old_cred = ovl_override_creds(old->d_sb);
-
- err = ovl_rename_upper(&ovlrd, &list);
+ if (!err) {
+ with_ovl_creds(old->d_sb)
+ err = ovl_rename_upper(&ovlrd, &list);
+ ovl_rename_end(&ovlrd);
+ }
- ovl_revert_creds(old_cred);
- ovl_rename_end(&ovlrd);
-out:
- dput(ovlrd->opaquedir);
+ dput(ovlrd.opaquedir);
ovl_cache_free(&list);
return err;
}