summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2017-11-11 19:39:36 -0600
committerEric Blake <eblake@redhat.com>2017-11-17 08:02:45 -0600
commit08ace1d75372b57c5ab56aea02c71cdda4b58fdf (patch)
tree19d69a0088efc3bb85f0469798faeb25efc5331c
parentfec035a53fa15c4c8c4e62bfef56a35df4161e38 (diff)
downloadqemu-08ace1d75372b57c5ab56aea02c71cdda4b58fdf.tar.gz
nbd: Don't crash when server reports NBD_CMD_READ failure
If a server fails a read, for example with EIO, but the connection is still live, then we would crash trying to print a non-existent error message in nbd_client_co_preadv(). For consistency, also change the error printout in nbd_read_reply_entry(), although that instance does not crash. Bug introduced in commit f140e300. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20171112013936.5942-1-eblake@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
-rw-r--r--block/nbd-client.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/block/nbd-client.c b/block/nbd-client.c
index bcfed0133d..9206652e45 100644
--- a/block/nbd-client.c
+++ b/block/nbd-client.c
@@ -78,7 +78,7 @@ static coroutine_fn void nbd_read_reply_entry(void *opaque)
while (!s->quit) {
assert(s->reply.handle == 0);
ret = nbd_receive_reply(s->ioc, &s->reply, &local_err);
- if (ret < 0) {
+ if (local_err) {
error_report_err(local_err);
}
if (ret <= 0) {
@@ -691,7 +691,7 @@ int nbd_client_co_preadv(BlockDriverState *bs, uint64_t offset,
ret = nbd_co_receive_cmdread_reply(client, request.handle, offset, qiov,
&local_err);
- if (ret < 0) {
+ if (local_err) {
error_report_err(local_err);
}
return ret;