Commit 264efe48 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ovl-fixes-6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs

Pull overlayfs fixes from Miklos Szeredi:
 "Fix two bugs, one originating in this cycle and one from 6.6"

* tag 'ovl-fixes-6.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs:
  ovl: fix encoding fid for lower only root
  ovl: fix copy-up in tmpfile
parents a502e727 004b8d14
...@@ -1314,10 +1314,6 @@ static int ovl_create_tmpfile(struct file *file, struct dentry *dentry, ...@@ -1314,10 +1314,6 @@ static int ovl_create_tmpfile(struct file *file, struct dentry *dentry,
int flags = file->f_flags | OVL_OPEN_FLAGS; int flags = file->f_flags | OVL_OPEN_FLAGS;
int err; int err;
err = ovl_copy_up(dentry->d_parent);
if (err)
return err;
old_cred = ovl_override_creds(dentry->d_sb); old_cred = ovl_override_creds(dentry->d_sb);
err = ovl_setup_cred_for_create(dentry, inode, mode, old_cred); err = ovl_setup_cred_for_create(dentry, inode, mode, old_cred);
if (err) if (err)
...@@ -1360,6 +1356,10 @@ static int ovl_tmpfile(struct mnt_idmap *idmap, struct inode *dir, ...@@ -1360,6 +1356,10 @@ static int ovl_tmpfile(struct mnt_idmap *idmap, struct inode *dir,
if (!OVL_FS(dentry->d_sb)->tmpfile) if (!OVL_FS(dentry->d_sb)->tmpfile)
return -EOPNOTSUPP; return -EOPNOTSUPP;
err = ovl_copy_up(dentry->d_parent);
if (err)
return err;
err = ovl_want_write(dentry); err = ovl_want_write(dentry);
if (err) if (err)
return err; return err;
......
...@@ -181,6 +181,10 @@ static int ovl_check_encode_origin(struct dentry *dentry) ...@@ -181,6 +181,10 @@ static int ovl_check_encode_origin(struct dentry *dentry)
struct ovl_fs *ofs = OVL_FS(dentry->d_sb); struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
bool decodable = ofs->config.nfs_export; bool decodable = ofs->config.nfs_export;
/* No upper layer? */
if (!ovl_upper_mnt(ofs))
return 1;
/* Lower file handle for non-upper non-decodable */ /* Lower file handle for non-upper non-decodable */
if (!ovl_dentry_upper(dentry) && !decodable) if (!ovl_dentry_upper(dentry) && !decodable)
return 1; return 1;
...@@ -209,7 +213,7 @@ static int ovl_check_encode_origin(struct dentry *dentry) ...@@ -209,7 +213,7 @@ static int ovl_check_encode_origin(struct dentry *dentry)
* ovl_connect_layer() will try to make origin's layer "connected" by * ovl_connect_layer() will try to make origin's layer "connected" by
* copying up a "connectable" ancestor. * copying up a "connectable" ancestor.
*/ */
if (d_is_dir(dentry) && ovl_upper_mnt(ofs) && decodable) if (d_is_dir(dentry) && decodable)
return ovl_connect_layer(dentry); return ovl_connect_layer(dentry);
/* Lower file handle for indexed and non-upper dir/non-dir */ /* Lower file handle for indexed and non-upper dir/non-dir */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment