--- b84a7695358dd2a4cb8afcd03a8b07a07e407eac +++ 22a19ad1d42a05a4829c078b0782c8b601dece8c @@ -497,7 +497,7 @@ static inline void really_put_req(struct ctx->reqs_active--; if (unlikely(!ctx->reqs_active && ctx->dead)) - wake_up(&ctx->wait); + wake_up_all(&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(&ioctx->wait); + wake_up_all(&ioctx->wait); put_ioctx(ioctx); /* once for the lookup */ }