linux/fs
Jens Axboe 8dcbf26833 aio: prevent potential eventfd recursion on poll
commit 01d7a35687 upstream.

If we have nested or circular eventfd wakeups, then we can deadlock if
we run them inline from our poll waitqueue wakeup handler. It's also
possible to have very long chains of notifications, to the extent where
we could risk blowing the stack.

Check the eventfd recursion count before calling eventfd_signal(). If
it's non-zero, then punt the signaling to async context. This is always
safe, as it takes us out-of-line in terms of stack and locking context.

Cc: stable@vger.kernel.org # 4.19+
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-02-11 04:35:37 -08:00
..
9p
adfs
affs affs: fix a memory leak in affs_remount 2020-01-17 19:48:50 +01:00
afs afs: Fix characters allowed into cell names 2020-01-29 16:45:24 +01:00
autofs
befs
bfs
btrfs btrfs: Correctly handle empty trees in find_first_clear_extent_bit 2020-02-11 04:35:34 -08:00
cachefiles
ceph ceph: hold extra reference to r_parent over life of request 2020-01-29 16:45:24 +01:00
cifs cifs: fix soft mounts hanging in the reconnect code 2020-02-05 21:22:39 +00:00
coda
configfs utimes: Clamp the timestamps in notify_change() 2020-02-11 04:35:12 -08:00
cramfs
crypto fscrypt: don't print name of busy file when removing key 2020-02-11 04:35:20 -08:00
debugfs debugfs: Return -EPERM when locked down 2020-02-01 09:34:35 +00:00
devpts
dlm
ecryptfs
efivarfs
efs
erofs erofs: fix out-of-bound read for shifted uncompressed block 2020-02-11 04:35:23 -08:00
exportfs
ext2 ext2: check err when partial != NULL 2019-12-17 19:56:43 +01:00
ext4 ext4: fix race conditions in ->d_compare() and ->d_hash() 2020-02-11 04:35:32 -08:00
f2fs f2fs: fix race conditions in ->d_compare() and ->d_hash() 2020-02-11 04:35:25 -08:00
fat
freevxfs
fscache
fuse fuse: fix fuse_send_readpages() in the syncronous read case 2020-01-23 08:22:32 +01:00
gfs2 gfs2: fix O_SYNC write handling 2020-02-11 04:35:35 -08:00
hfs
hfsplus
hostfs
hpfs
hugetlbfs mm/hugetlbfs: fix for_each_hstate() loop in init_hugetlbfs_fs() 2020-01-04 19:19:19 +01:00
iomap iomap: fix return value of iomap_dio_bio_actor on 32bit systems 2020-01-04 19:17:31 +01:00
isofs
jbd2 jbd2_seq_info_next should increase position index 2020-02-11 04:35:32 -08:00
jffs2 Revert "jffs2: Fix possible null-pointer dereferences in jffs2_add_frag_to_fragtree()" 2019-12-04 22:31:06 +01:00
jfs
kernfs kernfs: fix ino wrap-around detection 2019-12-13 08:42:53 +01:00
lockd
minix
nfs NFS: Directory page cache pages need to be locked when read 2020-02-11 04:35:32 -08:00
nfs_common
nfsd nfsd: fix filecache lookup 2020-02-11 04:35:32 -08:00
nilfs2
nls
notify fs: call fsnotify_sb_delete after evict_inodes 2020-01-12 12:21:38 +01:00
ntfs utimes: Clamp the timestamps in notify_change() 2020-02-11 04:35:12 -08:00
ocfs2 ocfs2: call journal flush to mark journal as empty after journal recovery when mount 2020-01-17 19:49:08 +01:00
omfs
openpromfs
orangefs
overlayfs ovl: fix lseek overflow on 32bit 2020-02-11 04:35:24 -08:00
proc
pstore pstore/ram: Regularize prz label allocation lifetime 2020-01-14 20:08:28 +01:00
qnx4
qnx6
quota fs: avoid softlockups in s_inodes iterators 2020-01-12 12:21:37 +01:00
ramfs
reiserfs reiserfs: Fix memory leak of journal device string 2020-02-05 21:22:40 +00:00
romfs
squashfs
sysfs
sysv
tracefs
ubifs ubifs: Fix deadlock in concurrent bulk-read and writepage 2020-02-11 04:35:21 -08:00
udf
ufs
unicode
verity
xfs xfs: Sanity check flags of Q_XQUOTARM call 2020-01-26 10:00:59 +01:00
Kconfig
Kconfig.binfmt
Makefile
aio.c aio: prevent potential eventfd recursion on poll 2020-02-11 04:35:37 -08:00
anon_inodes.c
attr.c utimes: Clamp the timestamps in notify_change() 2020-02-11 04:35:12 -08:00
bad_inode.c
binfmt_aout.c
binfmt_elf.c
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
block_dev.c bdev: Refresh bdev size for disks without partitioning 2019-12-13 08:43:19 +01:00
buffer.c fs: move guard_bio_eod() after bio_set_op_attrs 2020-01-17 19:48:21 +01:00
char_dev.c chardev: Avoid potential use-after-free in 'chrdev_open()' 2020-01-14 20:08:18 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c fix compat handling of FICLONERANGE, FIDEDUPERANGE and FS_IOC_FIEMAP 2020-01-09 10:20:05 +01:00
coredump.c
d_path.c
dax.c
dcache.c
dcookies.c
direct-io.c
drop_caches.c fs: avoid softlockups in s_inodes iterators 2020-01-12 12:21:37 +01:00
eventfd.c eventfd: track eventfd_signal() recursion depth 2020-02-11 04:35:37 -08:00
eventpoll.c
exec.c
fcntl.c
fhandle.c
file.c
file_table.c
filesystems.c
fs-writeback.c memcg: fix a crash in wb_workfn when a device disappears 2020-02-11 04:35:11 -08:00
fs_context.c
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fsopen.c
inode.c fs: avoid softlockups in s_inodes iterators 2020-01-12 12:21:37 +01:00
internal.h fs: move guard_bio_eod() after bio_set_op_attrs 2020-01-17 19:48:21 +01:00
io_uring.c Revert "io_uring: only allow submit from owning task" 2020-01-29 16:45:24 +01:00
ioctl.c compat_ioctl: add compat_ptr_ioctl() 2019-12-17 19:55:30 +01:00
libfs.c
locks.c locks: print unsigned ino in /proc/locks 2020-01-09 10:19:57 +01:00
mbcache.c
mount.h
mpage.c fs: move guard_bio_eod() after bio_set_op_attrs 2020-01-17 19:48:21 +01:00
namei.c vfs: fix do_last() regression 2020-02-05 21:22:39 +00:00
namespace.c
no-block.c
nsfs.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
proc_namespace.c
read_write.c fs: allow deduplication of eof block into the end of the destination file 2020-02-11 04:35:23 -08:00
readdir.c readdir: be more conservative with directory entry names 2020-01-29 16:45:31 +01:00
select.c
seq_file.c
signalfd.c
splice.c splice: only read in as much information as there is pipe buffer space 2019-12-17 19:56:52 +01:00
stack.c
stat.c
statfs.c
super.c fs: call fsnotify_sb_delete after evict_inodes 2020-01-12 12:21:38 +01:00
sync.c
timerfd.c
userfaultfd.c userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK 2020-01-04 19:18:32 +01:00
utimes.c utimes: Clamp the timestamps in notify_change() 2020-02-11 04:35:12 -08:00
xattr.c