summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Shah <amit.shah@redhat.com>2011-02-04 14:24:18 +0530
committerAnthony Liguori <aliguori@us.ibm.com>2011-02-04 06:53:52 -0600
commitcb5281b1998c12b8d93d0c6a29aeae13934ceb1a (patch)
tree36f061c16e7ce205775ffff69e0aff9f708a4a40
parent9a121a2fbf88dd1bc869b1ac2449dc12c27cccfa (diff)
downloadqemu-cb5281b1998c12b8d93d0c6a29aeae13934ceb1a.tar.gz
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 <quintela@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> (cherry picked from commit 7185f9315bcf90e99b123370cf4d19b8c20afbd5)
-rw-r--r--hw/virtio-serial-bus.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
index 09e22aa44a..e05ab5e609 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);
}