Skip to content

Commit db03d39

Browse files
author
Miklos Szeredi
committed
ovl: fix copy-up in tmpfile
Move ovl_copy_up() call outside of ovl_want_write()/ovl_drop_write() region, since copy up may also call ovl_want_write() resulting in recursive locking on sb->s_writers. Reported-and-tested-by: [email protected] Closes: https://lore.kernel.org/all/[email protected]/ Fixes: 9a87907 ("ovl: implement tmpfile") Signed-off-by: Miklos Szeredi <[email protected]>
1 parent 1613e60 commit db03d39

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

fs/overlayfs/dir.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,10 +1314,6 @@ static int ovl_create_tmpfile(struct file *file, struct dentry *dentry,
13141314
int flags = file->f_flags | OVL_OPEN_FLAGS;
13151315
int err;
13161316

1317-
err = ovl_copy_up(dentry->d_parent);
1318-
if (err)
1319-
return err;
1320-
13211317
old_cred = ovl_override_creds(dentry->d_sb);
13221318
err = ovl_setup_cred_for_create(dentry, inode, mode, old_cred);
13231319
if (err)
@@ -1360,6 +1356,10 @@ static int ovl_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
13601356
if (!OVL_FS(dentry->d_sb)->tmpfile)
13611357
return -EOPNOTSUPP;
13621358

1359+
err = ovl_copy_up(dentry->d_parent);
1360+
if (err)
1361+
return err;
1362+
13631363
err = ovl_want_write(dentry);
13641364
if (err)
13651365
return err;

0 commit comments

Comments
 (0)