From: Wang Liang <wanglian...@inspur.com> ret in virtio_pmem_resp is a uint32_t variable, which should be assigned using virtio_stl_p.
The kernel side driver does not guarantee virtio_pmem_resp to be initialized to zero in advance, So sometimes the flush operation will fail. Signed-off-by: Wang Liang <wanglian...@inspur.com> Message-Id: <20210317024145.271212-1-wanglian...@126.com> Reviewed-by: Stefano Garzarella <sgarz...@redhat.com> Reviewed-by: David Hildenbrand <da...@redhat.com> Reviewed-by: Pankaj Gupta <pankaj.gu...@cloud.ionos.com> Reviewed-by: Michael S. Tsirkin <m...@redhat.com> Signed-off-by: Michael S. Tsirkin <m...@redhat.com> --- hw/virtio/virtio-pmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index a3e0688a89..d1aeb90a31 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -47,7 +47,7 @@ static int worker_cb(void *opaque) err = 1; } - virtio_stw_p(req_data->vdev, &req_data->resp.ret, err); + virtio_stl_p(req_data->vdev, &req_data->resp.ret, err); return 0; } -- MST