The error handling logic was incorrect in virgl_cmd_resource_create_blob. virtio_gpu_create_mapping_iov() returns 0 on success and non-zero on failure, but the code was checking whether to set the error response.
The fix changes the condition from 'if (!ret)' to 'if (ret != 0)' to properly handle the return value, consistent with other usage patterns in the same codebase (see virtio-gpu.c:932 and virtio-gpu.c:354). Signed-off-by: Honglei Huang <[email protected]> --- hw/display/virtio-gpu-virgl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 94ddc01f91..e60e1059df 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -701,7 +701,7 @@ static void virgl_cmd_resource_create_blob(VirtIOGPU *g, ret = virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblob), cmd, &res->base.addrs, &res->base.iov, &res->base.iov_cnt); - if (!ret) { + if (ret != 0) { cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; return; } -- 2.34.1
