lkml.org 
[lkml]   [2012]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 1/2] aio: make kiocb->private NUll in init_sync_kiocb()
    Date
    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>
    Cc: stable@vger.kernel.org
    Acked-by: Jeff Moyer <jmoyer@redhat.com>
    Acked-by: Joel Becker <jlbec@evilplan.org>
    ---
    include/linux/aio.h | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/include/linux/aio.h b/include/linux/aio.h
    index 2314ad8..b1a520e 100644
    --- a/include/linux/aio.h
    +++ b/include/linux/aio.h
    @@ -140,6 +140,7 @@ struct kiocb {
    (x)->ki_dtor = NULL; \
    (x)->ki_obj.tsk = tsk; \
    (x)->ki_user_data = 0; \
    + (x)->private = NULL; \
    } while (0)

    #define AIO_RING_MAGIC 0xa10a10a1
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2012-06-27 12:01    [W:4.064 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site