kernel_optimize_test/fs
Zach Brown 897f15fb58 [PATCH] aio: remove unlocked task_list test and resulting race
Only one of the run or kick path is supposed to put an iocb on the run
list.  If both of them do it than one of them can end up referencing a
freed iocb.  The kick path could delete the task_list item from the wait
queue before getting the ctx_lock and putting the iocb on the run list.
The run path was testing the task_list item outside the lock so that it
could catch ki_retry methods that return -EIOCBRETRY *without* putting the
iocb on a wait queue and promising to call kick_iocb.  This unlocked check
could then race with the kick path to cause both to try and put the iocb on
the run list.

The patch stops the run path from testing task_list by requring that any
ki_retry that returns -EIOCBRETRY *must* guarantee that kick_iocb() will be
called in the future.  aio_p{read,write}, the only in-tree -EIOCBRETRY
users, are updated.

Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Benjamin LaHaise <bcrl@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-30 12:41:17 -07:00
..
9p [PATCH] missing ERR_PTR in 9fs 2005-09-30 08:42:23 -07:00
adfs [ARM] fs/adfs/adfs.h: "extern inline" doesn't make sense 2005-08-20 17:20:28 +01:00
affs [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
afs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
autofs [PATCH] autofs: fix "busy inodes after umount..." 2005-09-09 13:57:31 -07:00
autofs4 [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
befs befs: fix up missed follow_link declaration change 2005-08-20 13:20:01 -07:00
bfs [PATCH] bfs: fix endianness, signedness; add trivial bugfix 2005-09-09 13:57:32 -07:00
cifs [PATCH] cifs: Add support for suspend 2005-09-23 11:37:53 -07:00
coda
cramfs [PATCH] fs/cramfs/uncompress.c should #include <linux/cramfs_fs.h> 2005-09-10 10:06:35 -07:00
debugfs
devfs [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
devpts [PATCH] Generic VFS fallback for security xattrs 2005-09-05 00:05:52 -07:00
efs
exportfs
ext2 [PATCH] Fix ext2_new_inode() failure paths 2005-09-28 07:46:40 -07:00
ext3 [PATCH] Fix ext3_new_inode() failure paths 2005-09-28 07:46:40 -07:00
fat [PATCH] fat: fix adate 2005-09-21 10:12:18 -07:00
freevxfs [PATCH] fs: convert kcalloc to kzalloc 2005-09-07 16:57:46 -07:00
fuse [PATCH] fuse: check reserved node ID values 2005-09-28 07:46:40 -07:00
hfs [PATCH] hfs: NLS support 2005-09-07 16:57:50 -07:00
hfsplus [PATCH] Change HFS+ to not use ll_rw_block() 2005-09-07 16:57:56 -07:00
hostfs [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
hpfs [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
hppfs [PATCH] hppfs: fix symlink error path 2005-08-26 11:39:19 -07:00
hugetlbfs
isofs Check input buffer size in zisofs 2005-08-06 09:42:06 -07:00
jbd [PATCH] fs: fix-up schedule_timeout() usage 2005-09-10 10:06:36 -07:00
jffs [PATCH] janitor: jffs/intrep: list_for_each_entry 2005-09-10 10:06:32 -07:00
jffs2 [PATCH] jffs/jffs2: remove wrong function prototypes 2005-09-07 16:57:29 -07:00
jfs JFS: don't dereference tlck->ip from txUpdateMap 2005-09-20 14:58:11 -05:00
lockd [PATCH] fs: fix-up schedule_timeout() usage 2005-09-10 10:06:36 -07:00
minix [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
msdos
ncpfs [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
nfs [PATCH] NFS: fix client oops when debugging is on 2005-09-22 22:17:37 -07:00
nfs_common [PATCH] NFS: Ensure ACL xdr code doesn't overflow. 2005-08-16 08:52:11 -07:00
nfsd [PATCH] nfsd4: fix setclientid unlock of unlocked state lock 2005-09-13 08:22:32 -07:00
nls
ntfs NTFS: Re-fix sparse warnings in a more correct way, i.e. don't use an enum with 2005-09-26 17:02:41 +01:00
openpromfs
partitions
proc [PATCH] proc_task_root_link c99 fix 2005-09-22 22:17:33 -07:00
qnx4 [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
ramfs
reiserfs [PATCH] reiserfs: use mark_inode_dirty instead of reiserfs_update_sd 2005-09-13 08:22:29 -07:00
relayfs [PATCH] relayfs 2005-09-07 16:57:18 -07:00
romfs
smbfs [PATCH] fs: fix-up schedule_timeout() usage 2005-09-10 10:06:36 -07:00
sysfs [PATCH] Fix oops in sysfs_hash_and_remove_file() 2005-08-26 19:37:13 -07:00
sysv [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
udf [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
ufs [PATCH] update filesystems for new delete_inode behavior 2005-09-09 13:57:27 -07:00
vfat
xfs [PATCH] fs: fix-up schedule_timeout() usage 2005-09-10 10:06:36 -07:00
aio.c [PATCH] aio: remove unlocked task_list test and resulting race 2005-09-30 12:41:17 -07:00
attr.c [PATCH] inotify 2005-07-12 20:38:38 -07:00
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf.c
binfmt_em86.c
binfmt_flat.c [PATCH] uclinux: use MAP_PRIVATE when mmaping code regions in flat binary loader 2005-09-02 00:57:31 -07:00
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio.c [PATCH] bogus cast in bio.c 2005-09-09 10:31:58 -07:00
block_dev.c
buffer.c [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
char_dev.c [PATCH] cdev: cdev_put oops 2005-07-12 16:01:02 -07:00
compat_ioctl.c [PATCH] Lost sockfd_put() in routing_ioctl() 2005-09-09 14:24:05 -07:00
compat.c [COMPAT]: Fixup compat_do_execve() 2005-09-14 21:40:00 -07:00
dcache.c Make fsnotify possibly work better for the inode removal case 2005-09-19 19:54:29 -07:00
dcookies.c
direct-io.c
dnotify.c
dquot.c
eventpoll.c [PATCH] epoll: handle timeout overflow 2005-09-28 07:46:41 -07:00
exec.c [PATCH] error path in setup_arg_pages() misses vm_unacct_memory() 2005-09-14 11:18:13 -07:00
fcntl.c [PATCH] files: lock-free fd look-up 2005-09-09 13:57:55 -07:00
fifo.c
file_table.c [PATCH] files: files struct with RCU 2005-09-09 13:57:55 -07:00
file.c [PATCH] Fix the fdtable freeing in the case of vmalloced fdset/arrays 2005-09-14 12:38:26 -07:00
filesystems.c
fs-writeback.c
inode.c [PATCH] move truncate_inode_pages() into ->delete_inode() 2005-09-09 13:57:26 -07:00
inotify.c [PATCH] inotify: fix event loss on hardlinked files 2005-09-07 16:57:39 -07:00
ioctl.c
ioprio.c Don't allow normal users to set idle IO priority 2005-08-20 18:51:29 -07:00
Kconfig [PATCH] fuse: add required version info 2005-09-28 07:46:40 -07:00
Kconfig.binfmt
libfs.c
locks.c [PATCH] files: fix preemption issues 2005-09-17 11:50:02 -07:00
Makefile [PATCH] FUSE - MAINTAINERS, Kconfig and Makefile changes 2005-09-09 14:03:44 -07:00
mbcache.c [PATCH] mbcache: Remove unused mb_cache_shrink parameter 2005-07-27 16:26:07 -07:00
mpage.c
namei.c Merge master.kernel.org:/pub/scm/linux/kernel/git/dwmw2/audit-2.6 2005-09-13 09:47:30 -07:00
namespace.c [PATCH] janitor: fs/namespace.c: list_for_each_entry 2005-09-10 10:06:32 -07:00
nfsctl.c
open.c [PATCH] open returns ENFILE but creates file anyway 2005-09-13 08:22:28 -07:00
pipe.c [PATCH] sched: TASK_NONINTERACTIVE 2005-09-10 10:06:22 -07:00
posix_acl.c
quota_v1.c
quota_v2.c
quota.c
read_write.c [PATCH] readv/writev syscalls are not checked by lsm 2005-09-29 15:42:08 -07:00
readdir.c
select.c [PATCH] files: lock-free fd look-up 2005-09-09 13:57:55 -07:00
seq_file.c
stat.c
super.c
xattr_acl.c
xattr.c [PATCH] fsnotify: hook on removexattr, too 2005-09-07 16:57:27 -07:00