On Wed, Jul 16, 2025 at 2:47 AM NeilBrown <neil@xxxxxxxxxx> wrote: > > 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@xxxxxxxxxx> Reviewed-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > fs/overlayfs/copy_up.c | 4 ++-- > 1 file 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); > > -- > 2.49.0 >