From: Amit Shah Date: Fri, 4 Feb 2011 08:54:18 +0000 (+0530) Subject: virtio-serial: Make sure virtqueue is ready before discarding data X-Git-Tag: v0.14.0-rc1~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cb5281b1998c12b8d93d0c6a29aeae13934ceb1a;p=thirdparty%2Fqemu.git virtio-serial: Make sure virtqueue is ready before discarding data This can happen if a port gets unplugged before guest has chance to initialise vqs. Reported-by: Juan Quintela Signed-off-by: Amit Shah Signed-off-by: Anthony Liguori (cherry picked from commit 7185f9315bcf90e99b123370cf4d19b8c20afbd5) --- diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c index 09e22aa44a2..e05ab5e6096 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -117,6 +117,9 @@ static void discard_vq_data(VirtQueue *vq, VirtIODevice *vdev) { VirtQueueElement elem; + if (!virtio_queue_ready(vq)) { + return; + } while (virtqueue_pop(vq, &elem)) { virtqueue_push(vq, &elem, 0); }