diff --git a/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c b/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c index f24116e32da..62ef471405a 100644 --- a/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c +++ b/src/gallium/winsys/virgl/vtest/virgl_vtest_socket.c @@ -253,8 +253,13 @@ int virgl_vtest_send_get_caps(struct virgl_vtest_winsys *vws, ret = virgl_block_read(vws->sock_fd, &caps->caps, resp_size); - if (dummy_size) - ret = virgl_block_read(vws->sock_fd, &dummy, dummy_size); + while (dummy_size) { + ret = virgl_block_read(vws->sock_fd, &dummy, + dummy_size < sizeof(dummy) ? dummy_size : sizeof(dummy)); + if (ret <= 0) + break; + dummy_size -= ret; + } /* now read back the pointless caps v1 we requested */ ret = virgl_block_read(vws->sock_fd, resp_buf, sizeof(resp_buf));