Previous commits did the same with others virtqueue_ functions, but this check was repeated in the split and the packed version.
Signed-off-by: Eugenio Pérez <epere...@redhat.com> --- hw/virtio/virtio.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 9195b08da8..828c27de1f 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1631,10 +1631,6 @@ static unsigned int virtqueue_packed_drop_all(VirtQueue *vq) VirtIODevice *vdev = vq->vdev; VRingPackedDesc desc; - if (unlikely(vdev->broken)) { - return 0; - } - caches = vring_get_region_caches(vq); desc_cache = &caches->desc; @@ -1680,10 +1676,6 @@ static unsigned int virtqueue_split_drop_all(VirtQueue *vq) VirtIODevice *vdev = vq->vdev; bool fEventIdx = virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX); - if (unlikely(vdev->broken)) { - return 0; - } - while (!virtio_queue_empty(vq) && vq->inuse < vq->vring.num) { /* works similar to virtqueue_pop but does not map buffers * and does not allocate any memory */ @@ -1715,6 +1707,10 @@ unsigned int virtqueue_drop_all(VirtQueue *vq) { struct VirtIODevice *vdev = vq->vdev; + if (unlikely(vdev->broken)) { + return 0; + } + if (virtio_vdev_has_feature(vdev, VIRTIO_F_RING_PACKED)) { return virtqueue_packed_drop_all(vq); } else { -- 2.16.5