diff options
| author | Eric Blake | 2017-11-12 02:39:36 +0100 |
|---|---|---|
| committer | Eric Blake | 2017-11-17 15:02:45 +0100 |
| commit | 08ace1d75372b57c5ab56aea02c71cdda4b58fdf (patch) | |
| tree | 19d69a0088efc3bb85f0469798faeb25efc5331c | |
| parent | Merge remote-tracking branch 'remotes/kraxel/tags/ui-20171117-pull-request' i... (diff) | |
| download | qemu-08ace1d75372b57c5ab56aea02c71cdda4b58fdf.tar.gz qemu-08ace1d75372b57c5ab56aea02c71cdda4b58fdf.tar.xz qemu-08ace1d75372b57c5ab56aea02c71cdda4b58fdf.zip | |
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.c | 4 |
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; |
