diff options
author | Amit Shah <amit.shah@redhat.com> | 2011-02-04 14:24:18 +0530 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-02-04 06:53:52 -0600 |
commit | cb5281b1998c12b8d93d0c6a29aeae13934ceb1a (patch) | |
tree | 36f061c16e7ce205775ffff69e0aff9f708a4a40 | |
parent | 9a121a2fbf88dd1bc869b1ac2449dc12c27cccfa (diff) | |
download | qemu-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.c | 3 |
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); } |