From: Al Viro Date: Sun, 12 Jul 2015 14:39:45 +0000 (-0400) Subject: fix a braino in ovl_d_select_inode() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=9391dd00d13c853ab4f2a85435288ae2202e0e43;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git fix a braino in ovl_d_select_inode() when opening a directory we want the overlayfs inode, not one from the topmost layer. Reported-By: Andrey Jr. Melnikov Tested-By: Andrey Jr. Melnikov Signed-off-by: Al Viro --- diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index f140e3dbfb7b..d9da5a4e9382 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -343,6 +343,9 @@ struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags) struct path realpath; enum ovl_path_type type; + if (d_is_dir(dentry)) + return d_backing_inode(dentry); + type = ovl_path_real(dentry, &realpath); if (ovl_open_need_copy_up(file_flags, type, realpath.dentry)) { err = ovl_want_write(dentry);