diff -r 74c172a99cdb fs/aio.c --- a/fs/aio.c Tue Mar 16 18:55:59 2010 +0300 +++ b/fs/aio.c Tue Mar 16 19:08:49 2010 +0300 @@ -1035,7 +1035,9 @@ spin_unlock_irq(&ctx->ctx_lock); cancel(iocb, &res); spin_lock_irq(&ctx->ctx_lock); + __aio_put_req(req); } + __aio_put_req(req); } spin_unlock_irq(&ctx->ctx_lock); } @@ -1789,9 +1791,11 @@ if (copy_to_user(result, &tmp, sizeof(tmp))) ret = -EFAULT; } + aio_put_req(req); } else ret = -EINVAL; + aio_put_req(req); put_ioctx(ctx); return ret;