summaryrefslogtreecommitdiff
path: root/fs/overlayfs
diff options
context:
space:
mode:
authorNeilBrown <neil@brown.name>2025-07-16 10:44:15 +1000
committerChristian Brauner <brauner@kernel.org>2025-07-18 11:10:40 +0200
commita735bdf0b78528970f169870ced234dd3a33ea7b (patch)
tree1f5894553dab546a6dcb74c4d2517af42c706063 /fs/overlayfs
parentd2c995581c7c5d0ff623b2700e76bf22499c66df (diff)
downloadlinux-a735bdf0b78528970f169870ced234dd3a33ea7b.tar.gz
linux-a735bdf0b78528970f169870ced234dd3a33ea7b.tar.bz2
linux-a735bdf0b78528970f169870ced234dd3a33ea7b.zip
ovl: narrow the locked region in ovl_copy_up_workdir()
In ovl_copy_up_workdir() unlock immediately after the rename. There is nothing else in the function that needs the lock. Signed-off-by: NeilBrown <neil@brown.name> Link: https://lore.kernel.org/20250716004725.1206467-5-neil@brown.name 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/copy_up.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
index fef873d18b2d..8f8dbe8a1d54 100644
--- a/fs/overlayfs/copy_up.c
+++ b/fs/overlayfs/copy_up.c
@@ -829,9 +829,10 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)
goto cleanup;
err = ovl_do_rename(ofs, c->workdir, temp, c->destdir, upper, 0);
+ unlock_rename(c->workdir, c->destdir);
dput(upper);
if (err)
- goto cleanup;
+ goto cleanup_unlocked;
inode = d_inode(c->dentry);
if (c->metacopy_digest)
@@ -845,7 +846,6 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)
ovl_inode_update(inode, temp);
if (S_ISDIR(inode->i_mode))
ovl_set_flag(OVL_WHITEOUTS, inode);
- unlock_rename(c->workdir, c->destdir);
out:
ovl_end_write(c->dentry);