8360fa3a32
- Fix CVE-2021-3527 in usb/redir: usb-redir-avoid-dynamic-stack-allocation.patch - Fix issues found upstream: hw-block-nvme-consider-metadata-read-aio.patch sockets-update-SOCKET_ADDRESS_TYPE_FD-li.patch vfio-ccw-Permit-missing-IRQs.patch vhost-user-blk-Check-that-num-queues-is-.patch vhost-user-blk-Don-t-reconnect-during-in.patch vhost-user-blk-Fail-gracefully-on-too-la.patch vhost-user-blk-Get-more-feature-flags-fr.patch vhost-user-blk-Make-sure-to-set-Error-on.patch virtio-blk-Fix-rollback-path-in-virtio_b.patch virtio-Fail-if-iommu_platform-is-request.patch virtiofsd-Fix-side-effect-in-assert.patch monitor-qmp-fix-race-on-CHR_EVENT_CLOSED.patch OBS-URL: https://build.opensuse.org/request/show/895224 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=650
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From: Gollu Appalanaidu <anaidu.gollu@samsung.com>
|
|
Date: Fri, 16 Apr 2021 12:52:33 +0530
|
|
Subject: hw/block/nvme: consider metadata read aio return value in compare
|
|
|
|
Git-commit: b4a983239343efd0a2d8a6cdf0690d0d707ec4ea
|
|
|
|
Currently in compare command metadata aio read blk_aio_preadv return
|
|
value ignored. Consider it and complete the block accounting.
|
|
|
|
Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com>
|
|
Fixes: 0a384f923f51 ("hw/block/nvme: add compare command")
|
|
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
|
|
Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
|
|
---
|
|
hw/block/nvme.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
|
|
index 5fe082ec34c57471fab0fa7e8a0c..ba90053b63ed4884deb98d62b6d6 100644
|
|
--- a/hw/block/nvme.c
|
|
+++ b/hw/block/nvme.c
|
|
@@ -2369,10 +2369,19 @@ static void nvme_compare_mdata_cb(void *opaque, int ret)
|
|
uint32_t reftag = le32_to_cpu(rw->reftag);
|
|
struct nvme_compare_ctx *ctx = req->opaque;
|
|
g_autofree uint8_t *buf = NULL;
|
|
+ BlockBackend *blk = ns->blkconf.blk;
|
|
+ BlockAcctCookie *acct = &req->acct;
|
|
+ BlockAcctStats *stats = blk_get_stats(blk);
|
|
uint16_t status = NVME_SUCCESS;
|
|
|
|
trace_pci_nvme_compare_mdata_cb(nvme_cid(req));
|
|
|
|
+ if (ret) {
|
|
+ block_acct_failed(stats, acct);
|
|
+ nvme_aio_err(req, ret);
|
|
+ goto out;
|
|
+ }
|
|
+
|
|
buf = g_malloc(ctx->mdata.iov.size);
|
|
|
|
status = nvme_bounce_mdata(n, buf, ctx->mdata.iov.size,
|
|
@@ -2421,6 +2430,8 @@ static void nvme_compare_mdata_cb(void *opaque, int ret)
|
|
goto out;
|
|
}
|
|
|
|
+ block_acct_done(stats, acct);
|
|
+
|
|
out:
|
|
qemu_iovec_destroy(&ctx->data.iov);
|
|
g_free(ctx->data.bounce);
|