virtio-serial: Check if virtio queue is ready before consuming data

If a virtio-serial port is removed before the guest comes up and
initialises the virtqueues, qemu exits with the message

Guest moved used index from 0 to 61440

This happens because we try to clear any pending buffers from the
virtqueue.

Ensure the virtqueue is initialised before calling any virtqueue
operations.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Amit Shah 2010-07-01 14:58:16 +05:30 committed by Anthony Liguori
parent a03c54f16e
commit 6b611d3ab8
1 changed files with 3 additions and 0 deletions

View File

@ -139,6 +139,9 @@ static void flush_queued_data(VirtIOSerialPort *port, bool discard)
{
assert(port);
if (!virtio_queue_ready(port->ovq)) {
return;
}
do_flush_queued_data(port, port->ovq, &port->vser->vdev, discard);
}