X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fvirtio%2Fvirtio_ring.c;h=fbd2ecde93e409ea9287d068d3f2322297c910cc;hb=607781762e7aae9c976f0a9a8829d4ba3e2da4ab;hp=f536005807269728f3285f7bbf6f176cd790e5c2;hpb=a372bf8b6a12f23f68e716113ccaea4bf646dd0f;p=~andy%2Flinux diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index f5360058072..fbd2ecde93e 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -285,6 +285,9 @@ static void *vring_get_buf(struct virtqueue *_vq, unsigned int *len) return NULL; } + /* Only get used array entries after they have been exposed by host. */ + rmb(); + i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id; *len = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].len;