ovl: fix open in stacked overlay
If two overlayfs filesystems are stacked on top of each other, then we need
recursion in ovl_d_select_inode().
I guess d_backing_inode() is supposed to do that. But currently it doesn't
and that functionality is open coded in vfs_open(). This is now copied
into ovl_d_select_inode() to fix this regression.
Reported-by: Alban Crequy <alban.crequy@gmail.com>
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Fixes: 4bacc9c923
("overlayfs: Make f_path always point to the overlay...")
Cc: David Howells <dhowells@redhat.com>
Cc: <stable@vger.kernel.org> # v4.2+
This commit is contained in:
parent
ab79efab0a
commit
1c8a47df36
|
@ -363,6 +363,9 @@ struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags)
|
||||||
ovl_path_upper(dentry, &realpath);
|
ovl_path_upper(dentry, &realpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (realpath.dentry->d_flags & DCACHE_OP_SELECT_INODE)
|
||||||
|
return realpath.dentry->d_op->d_select_inode(realpath.dentry, file_flags);
|
||||||
|
|
||||||
return d_backing_inode(realpath.dentry);
|
return d_backing_inode(realpath.dentry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue