From 59be75e7d8693b953c072487b1fb6cef2b7bb41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 12 Mar 2021 14:00:45 +0400 Subject: [PATCH] vhost-user-gpu: fix cursor move/update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "move" is incorrectly initialized. Fix it by using a switch statement and also treating unknown commands with a fallback. Signed-off-by: Marc-André Lureau Message-Id: <20210312100108.2706195-5-marcandre.lureau@redhat.com> Signed-off-by: Gerd Hoffmann --- contrib/vhost-user-gpu/vhost-user-gpu.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c index ef40fbccbb..f73f292c9f 100644 --- a/contrib/vhost-user-gpu/vhost-user-gpu.c +++ b/contrib/vhost-user-gpu/vhost-user-gpu.c @@ -892,11 +892,8 @@ update_cursor_data_simple(VuGpu *g, uint32_t resource_id, gpointer data) static void vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor) { - bool move = cursor->hdr.type != VIRTIO_GPU_CMD_MOVE_CURSOR; - - g_debug("%s move:%d\n", G_STRFUNC, move); - - if (move) { + switch (cursor->hdr.type) { + case VIRTIO_GPU_CMD_MOVE_CURSOR: { VhostUserGpuMsg msg = { .request = cursor->resource_id ? VHOST_USER_GPU_CURSOR_POS : VHOST_USER_GPU_CURSOR_POS_HIDE, @@ -907,8 +904,11 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor) .y = cursor->pos.y, } }; + g_debug("%s: move", G_STRFUNC); vg_send_msg(g, &msg, -1); - } else { + break; + } + case VIRTIO_GPU_CMD_UPDATE_CURSOR: { VhostUserGpuMsg msg = { .request = VHOST_USER_GPU_CURSOR_UPDATE, .size = sizeof(VhostUserGpuCursorUpdate), @@ -922,6 +922,7 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor) .hot_y = cursor->hot_y, } }; + g_debug("%s: update", G_STRFUNC); if (g->virgl) { vg_virgl_update_cursor_data(g, cursor->resource_id, msg.payload.cursor_update.data); @@ -930,6 +931,11 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor) msg.payload.cursor_update.data); } vg_send_msg(g, &msg, -1); + break; + } + default: + g_debug("%s: unknown cmd %d", G_STRFUNC, cursor->hdr.type); + break; } }