|
@@ -293,7 +293,7 @@ retry:
|
|
|
ret = virtqueue_add_sgs(vq, sgs, outcnt, incnt, vbuf, GFP_ATOMIC);
|
|
|
if (ret == -ENOSPC) {
|
|
|
spin_unlock(&vgdev->ctrlq.qlock);
|
|
|
- wait_event(vgdev->ctrlq.ack_queue, vq->num_free);
|
|
|
+ wait_event(vgdev->ctrlq.ack_queue, vq->num_free >= outcnt + incnt);
|
|
|
spin_lock(&vgdev->ctrlq.qlock);
|
|
|
goto retry;
|
|
|
} else {
|
|
@@ -368,7 +368,7 @@ retry:
|
|
|
ret = virtqueue_add_sgs(vq, sgs, outcnt, 0, vbuf, GFP_ATOMIC);
|
|
|
if (ret == -ENOSPC) {
|
|
|
spin_unlock(&vgdev->cursorq.qlock);
|
|
|
- wait_event(vgdev->cursorq.ack_queue, vq->num_free);
|
|
|
+ wait_event(vgdev->cursorq.ack_queue, vq->num_free >= outcnt);
|
|
|
spin_lock(&vgdev->cursorq.qlock);
|
|
|
goto retry;
|
|
|
} else {
|