--- 22a19ad1d42a05a4829c078b0782c8b601dece8c +++ 02a2c9340573cf5946e0083187353d4517319844 @@ -497,7 +497,7 @@ static inline void really_put_req(struct ctx->reqs_active--; if (unlikely(!ctx->reqs_active && ctx->dead)) - wake_up_all(&ctx->wait); + wake_up(&ctx->wait); } static void aio_fput_routine(struct work_struct *data) @@ -1219,7 +1219,7 @@ static void io_destroy(struct kioctx *io * by other CPUs at this point. Right now, we rely on the * locking done by the above calls to ensure this consistency. */ - wake_up_all(&ioctx->wait); + wake_up(&ioctx->wait); put_ioctx(ioctx); /* once for the lookup */ } @@ -1639,9 +1639,6 @@ SYSCALL_DEFINE3(io_submit, aio_context_t if (unlikely(nr < 0)) return -EINVAL; - if (unlikely(nr > LONG_MAX/sizeof(*iocbpp))) - nr = LONG_MAX/sizeof(*iocbpp); - if (unlikely(!access_ok(VERIFY_READ, iocbpp, (nr*sizeof(*iocbpp))))) return -EFAULT;