]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blobdiff - drivers/vhost/vhost.c
Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[mirror_ubuntu-eoan-kernel.git] / drivers / vhost / vhost.c
index 998bed505530df03e033719e88c5d38405d34ac6..9469364eefd73ef59fdfde46019ac6fdd1ce5538 100644 (file)
@@ -2330,11 +2330,15 @@ bool vhost_vq_avail_empty(struct vhost_dev *dev, struct vhost_virtqueue *vq)
        __virtio16 avail_idx;
        int r;
 
+       if (vq->avail_idx != vq->last_avail_idx)
+               return false;
+
        r = vhost_get_avail(vq, avail_idx, &vq->avail->idx);
-       if (r)
+       if (unlikely(r))
                return false;
+       vq->avail_idx = vhost16_to_cpu(vq, avail_idx);
 
-       return vhost16_to_cpu(vq, avail_idx) == vq->avail_idx;
+       return vq->avail_idx == vq->last_avail_idx;
 }
 EXPORT_SYMBOL_GPL(vhost_vq_avail_empty);