diff options
| author | NeilBrown <neil@brown.name> | 2025-07-16 10:44:15 +1000 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-07-18 11:10:40 +0200 |
| commit | a735bdf0b78528970f169870ced234dd3a33ea7b (patch) | |
| tree | 1f5894553dab546a6dcb74c4d2517af42c706063 /fs/overlayfs | |
| parent | d2c995581c7c5d0ff623b2700e76bf22499c66df (diff) | |
| download | linux-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.c | 4 |
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); |
