eventfd/kaio integration fix
Davide Libenzi authored

Jeff Roberson discovered a race when using kaio eventfd based notifications.
When it occurs it can lead tomissed wakeups and hung userspace.

This patch fixes the race by moving the notification inside the spinlocked
section of kaio.  The operation is safe since eventfd spinlock and kaio one
are unrelated.
Signed-off-by: default avatarDavide Libenzi <davidel@xmailserver.org>
Cc: Zach Brown <zach.brown@oracle.com>
Cc: Jeff Roberson <jroberson@chesapeake.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
8d1c98b0
Name Last commit Last update
..
9p Convert ERR_PTR(PTR_ERR(p)) instances to ERR_CAST(p)
adfs mount options: fix adfs
affs mount options: fix affs
afs afs: remove smp_prcessor_id() from debug macro
autofs mount options: fix autofs
autofs4 Introduce path_put()
befs mount options: fix befs
bfs iget: stop BFS from using iget() and read_inode()
cifs cifs: fix misannotations
coda Introduce path_put()
configfs Introduce path_put()
cramfs fs/cramfs/inode.c: replace hardcoded value with preprocessor constant
debugfs debugfs: fix sparse warnings
devpts mount options: fix devpts
dlm dlm: fix rcom_names message to self
ecryptfs eCryptfs: Swap dput() and mntput()
efs efs: update error msg to not refer to deleted read_inode()
exportfs exportfs: update documentation
ext2 mount options: fix ext2
ext3 ext3: fix wrong gfp type under transaction
ext4 ext4: add missing ext4_journal_stop()
fat mount options: fix fat
freevxfs iget: stop FreeVXFS from using iget() and read_inode()
fuse fuse: fix permission checking
gfs2 Introduce path_put()
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jbd2
jffs2
jfs
lockd
minix
msdos
ncpfs
nfs
nfs_common
nfsd
nls
ntfs
ocfs2
openpromfs
partitions
proc
qnx4
ramfs
reiserfs
romfs
smbfs
sysfs
sysv
udf
ufs
vfat
xfs
Kconfig
Kconfig.binfmt
Makefile
aio.c
anon_inodes.c
attr.c
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
binfmt_som.c
bio.c
block_dev.c
buffer.c
char_dev.c
compat.c
compat_binfmt_elf.c
compat_ioctl.c
dcache.c
dcookies.c
direct-io.c
dnotify.c
dquot.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c
fcntl.c
fifo.c
file.c
file_table.c
filesystems.c
fs-writeback.c
generic_acl.c
inode.c
inotify.c
inotify_user.c
internal.h
ioctl.c
ioprio.c
libfs.c
locks.c
mbcache.c
mpage.c
namei.c
namespace.c
nfsctl.c
no-block.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
quota.c
quota_v1.c
quota_v2.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
super.c
sync.c
timerfd.c
utimes.c
xattr.c
xattr_acl.c