https://github.com/torvalds/linux
Revision 939ae4efd51c627da270af74ef069db5124cb5b0 authored by Amir Goldstein on 11 September 2017, 13:30:15 UTC, committed by Miklos Szeredi on 12 September 2017, 15:22:20 UTC
Commit b9ac5c274b8c ("ovl: hash overlay non-dir inodes by copy up origin")
verifies that the origin lower inode stored in the overlayfs inode matched
the inode of a copy up origin dentry found by lookup.

There is a false positive result in that check when lower fs does not
support file handles and copy up origin cannot be followed by file handle
at lookup time.

The false negative happens when finding an overlay inode in cache on a
copied up overlay dentry lookup. The overlay inode still 'remembers' the
copy up origin inode, but the copy up origin dentry is not available for
verification.

Relax the check in case copy up origin dentry is not available.

Fixes: b9ac5c274b8c ("ovl: hash overlay non-dir inodes by copy up...")
Cc: <stable@vger.kernel.org> # v4.13
Reported-by: Jordi Pujol <jordipujolp@gmail.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
1 parent 7c6893e
History
Tip revision: 939ae4efd51c627da270af74ef069db5124cb5b0 authored by Amir Goldstein on 11 September 2017, 13:30:15 UTC
ovl: fix false positive ESTALE on lookup
Tip revision: 939ae4e
File Mode Size
9p
adfs
affs
afs
autofs4
befs
bfs
btrfs
cachefiles
ceph
cifs
coda
configfs
cramfs
crypto
debugfs
devpts
dlm
ecryptfs
efivarfs
efs
exofs
exportfs
ext2
ext4
f2fs
fat
freevxfs
fscache
fuse
gfs2
hfs
hfsplus
hostfs
hpfs
hugetlbfs
isofs
jbd2
jffs2
jfs
kernfs
lockd
minix
ncpfs
nfs
nfs_common
nfsd
nilfs2
nls
notify
ntfs
ocfs2
omfs
openpromfs
orangefs
overlayfs
proc
pstore
qnx4
qnx6
quota
ramfs
reiserfs
romfs
squashfs
sysfs
sysv
tracefs
ubifs
udf
ufs
xfs
Kconfig -rw-r--r-- 7.1 KB
Kconfig.binfmt -rw-r--r-- 7.2 KB
Makefile -rw-r--r-- 4.2 KB
aio.c -rw-r--r-- 46.2 KB
anon_inodes.c -rw-r--r-- 4.9 KB
attr.c -rw-r--r-- 9.2 KB
bad_inode.c -rw-r--r-- 5.3 KB
binfmt_aout.c -rw-r--r-- 10.8 KB
binfmt_elf.c -rw-r--r-- 62.9 KB
binfmt_elf_fdpic.c -rw-r--r-- 47.0 KB
binfmt_em86.c -rw-r--r-- 2.8 KB
binfmt_flat.c -rw-r--r-- 27.8 KB
binfmt_misc.c -rw-r--r-- 18.3 KB
binfmt_script.c -rw-r--r-- 3.0 KB
block_dev.c -rw-r--r-- 53.2 KB
buffer.c -rw-r--r-- 94.3 KB
char_dev.c -rw-r--r-- 16.1 KB
compat.c -rw-r--r-- 5.1 KB
compat_binfmt_elf.c -rw-r--r-- 3.4 KB
compat_ioctl.c -rw-r--r-- 45.5 KB
coredump.c -rw-r--r-- 21.3 KB
dax.c -rw-r--r-- 41.3 KB
dcache.c -rw-r--r-- 94.7 KB
dcookies.c -rw-r--r-- 6.9 KB
direct-io.c -rw-r--r-- 38.5 KB
drop_caches.c -rw-r--r-- 1.6 KB
eventfd.c -rw-r--r-- 12.9 KB
eventpoll.c -rw-r--r-- 63.4 KB
exec.c -rw-r--r-- 45.2 KB
fcntl.c -rw-r--r-- 22.5 KB
fhandle.c -rw-r--r-- 6.8 KB
file.c -rw-r--r-- 23.2 KB
file_table.c -rw-r--r-- 8.6 KB
filesystems.c -rw-r--r-- 6.5 KB
fs-writeback.c -rw-r--r-- 70.5 KB
fs_pin.c -rw-r--r-- 2.0 KB
fs_struct.c -rw-r--r-- 3.3 KB
inode.c -rw-r--r-- 55.1 KB
internal.h -rw-r--r-- 4.7 KB
ioctl.c -rw-r--r-- 17.3 KB
iomap.c -rw-r--r-- 24.8 KB
libfs.c -rw-r--r-- 30.6 KB
locks.c -rw-r--r-- 72.6 KB
mbcache.c -rw-r--r-- 11.8 KB
mount.h -rw-r--r-- 3.8 KB
mpage.c -rw-r--r-- 20.6 KB
namei.c -rw-r--r-- 120.9 KB
namespace.c -rw-r--r-- 85.4 KB
no-block.c -rw-r--r-- 688 bytes
nsfs.c -rw-r--r-- 5.6 KB
open.c -rw-r--r-- 28.4 KB
pipe.c -rw-r--r-- 27.3 KB
pnode.c -rw-r--r-- 15.3 KB
pnode.h -rw-r--r-- 1.9 KB
posix_acl.c -rw-r--r-- 21.4 KB
proc_namespace.c -rw-r--r-- 7.8 KB
read_write.c -rw-r--r-- 46.6 KB
readdir.c -rw-r--r-- 11.2 KB
select.c -rw-r--r-- 35.0 KB
seq_file.c -rw-r--r-- 22.7 KB
signalfd.c -rw-r--r-- 9.2 KB
splice.c -rw-r--r-- 40.0 KB
stack.c -rw-r--r-- 2.5 KB
stat.c -rw-r--r-- 19.2 KB
statfs.c -rw-r--r-- 9.4 KB
super.c -rw-r--r-- 38.9 KB
sync.c -rw-r--r-- 9.9 KB
timerfd.c -rw-r--r-- 13.3 KB
userfaultfd.c -rw-r--r-- 48.0 KB
utimes.c -rw-r--r-- 7.1 KB
xattr.c -rw-r--r-- 23.4 KB

back to top