diff options
| author | Christian Brauner <brauner@kernel.org> | 2025-11-19 20:53:17 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-11-19 21:58:24 +0100 |
| commit | ca0c657f258089cbb7b6d269cf91936ab83dac3f (patch) | |
| tree | 6dd5662a6a6782f9f1cb19466357e8167373d8e1 /fs/overlayfs | |
| parent | a1da8401987e671ac18720eb26c7ee52e79e3d4c (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.c | 17 |
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; } |