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
This commit is contained in:
@ -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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
* 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 */
|
||||||
|
Reference in New Issue
Block a user