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(-)


Reply via email to