--- .pc/aio-bugfixes.patch/fs/aio.c 2004-10-14 12:58:39 -07:00 +++ fs/aio.c 2004-10-14 12:58:39 -07:00 @@ -86,7 +86,8 @@ static void aio_free_ring(struct kioctx long i; for (i=0; inr_pages; i++) - put_page(info->ring_pages[i]); + if (info->ring_pages[i]) + put_page(info->ring_pages[i]); if (info->mmap_size) { down_write(&ctx->mm->mmap_sem); --- .pc/aio-bugfixes.patch/mm/filemap.c 2004-10-14 12:58:39 -07:00 +++ mm/filemap.c 2004-10-14 12:58:39 -07:00 @@ -976,9 +976,11 @@ __generic_file_aio_read(struct kiocb *io desc.error = 0; do_generic_file_read(filp,ppos,&desc,file_read_actor); retval += desc.written; - if (!retval) { - retval = desc.error; - break; + + if (desc.written < iov[seg].iov_len) { + if (retval == 0) + retval = desc.error; + break; } } }