|
@@ -2241,11 +2241,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_user(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);
|
|
|
|