]> git.karo-electronics.de Git - karo-tx-linux.git/commit
aio: make kiocb->private NUll in init_sync_kiocb()
authorJunxiao Bi <junxiao.bi@oracle.com>
Wed, 27 Jun 2012 09:09:54 +0000 (17:09 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 12 Jul 2012 03:32:18 +0000 (04:32 +0100)
commit18a72053c4361bbecf7d33eb394e0dfe43d7f253
tree0dd0d3f9ce4ea83d5f06e19071d1cca42b74db2f
parent1a5d75eb4a42279e5e652376fc0d0d885876d2b3
aio: make kiocb->private NUll in init_sync_kiocb()

commit 2dfd06036ba7ae8e7be2daf5a2fff1dac42390bf upstream.

Ocfs2 uses kiocb.*private as a flag of unsigned long size. In
commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned
io flag is involved in it to serialize the unaligned aio. As
*private is not initialized in init_sync_kiocb() of do_sync_write(),
this unaligned io flag may be unexpectly set in an aligned dio.
And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased
to -1 in ocfs2_dio_end_io(), thus the following unaligned dio
will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write().

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
include/linux/aio.h