Do not continue any operation if s->quit is set in parallel.
Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
block/nbd-client.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/block/nbd-client.c b/block/nbd-client.c
index 280147e6a7..f80a4c5564 100644
--- a/block/nbd-client.c
+++ b/block/nbd-client.c
@@ -81,7 +81,7 @@ static coroutine_fn void nbd_read_reply_entry(void *opaque)
if (ret < 0) {
error_report_err(local_err);
}
- if (ret <= 0) {
+ if (ret <= 0 || s->quit) {
break;
}
@@ -105,9 +105,8 @@ static coroutine_fn void nbd_read_reply_entry(void *opaque)
assert(qiov != NULL);
assert(s->requests[i].request->len ==
iov_size(qiov->iov, qiov->niov));
- if (qio_channel_readv_all(s->ioc, qiov->iov, qiov->niov,
- NULL) < 0)
- {
+ ret = qio_channel_readv_all(s->ioc, qiov->iov, qiov->niov, NULL);
+ if (ret < 0 || s->quit) {
s->requests[i].ret = -EIO;
break;
}
--
2.11.1