• William Lee Irwin III's avatar
    [AIO]: kiocb->private is too large for kiocb's on-stack. · 20e7c361
    William Lee Irwin III authored
    sizeof(struct kiocb) is dangerously large for a structure commonly
    allocated on-stack. This patch converts the 24*sizeof(long) field,
    ->private, to a void pointer for use by file_operations entrypoints.
    A ->dtor() method is added to the kiocb in order to support the release
    of dynamically allocated structures referred to by ->private.
    
    The sole in-tree users of ->private are async network read/write,
    which are not, in fact, async, and so need not handle preallocated
    ->private as they would need to if ->ki_retry were ever used. The sole
    truly async operations are direct IO pread()/pwrite() which do not
    now use ->ki_retry(). All they would need to do in that case is to
    check for ->private already being allocated for async kiocbs.
    
    This rips 88B off the stack on 32-bit in the common case.
    Signed-off-by: default avatarWilliam Lee Irwin III <wli@holomorphy.com>
    Signed-off-by: default avatarDavid S. Miller <davem@redhat.com>
    20e7c361
aio.c 31.6 KB