virtio-blk and virtio-serial need to free VirtQueueElements during device reset. Simply calling g_free(elem) is not enough because the scatter-gather list should be unmapped and vq->inuse must be decremented.
These patches address the issue. I am not including a patch that changes vq->inuse = 0 to assert(!vq->inuse) in virtio_reset() yet because virtio-9p, virtio-gpu, and virtio-net have code paths that do not decrement vq->inuse. Stefan Hajnoczi (3): virtio: add virtio_detach_element() virtio-blk: add missing virtio_detach_element() call virtio-serial: add missing virtio_detach_element() call hw/block/virtio-blk.c | 1 + hw/char/virtio-serial-bus.c | 14 ++++++++++++++ hw/virtio/virtio.c | 27 +++++++++++++++++++++++++-- include/hw/virtio/virtio.h | 2 ++ 4 files changed, 42 insertions(+), 2 deletions(-) -- 2.7.4