diff options
Diffstat (limited to 'drivers/virtio/virtio_ring.c')
| -rw-r--r-- | drivers/virtio/virtio_ring.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index afe7e21dd0a..1475ed6b575 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -164,7 +164,8 @@ int virtqueue_add_buf_gfp(struct virtqueue *_vq,  			  gfp_t gfp)  {  	struct vring_virtqueue *vq = to_vvq(_vq); -	unsigned int i, avail, head, uninitialized_var(prev); +	unsigned int i, avail, uninitialized_var(prev); +	int head;  	START_USE(vq); @@ -174,7 +175,7 @@ int virtqueue_add_buf_gfp(struct virtqueue *_vq,  	 * buffers, then go indirect. FIXME: tune this threshold */  	if (vq->indirect && (out + in) > 1 && vq->num_free) {  		head = vring_add_indirect(vq, sg, out, in, gfp); -		if (head != vq->vring.num) +		if (likely(head >= 0))  			goto add_head;  	}  |