mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
virtio: console makes incorrect assumption about virtio API
The get_buf() API sets the second arg to the number of bytes *written* by the other side; in this case it should be zero as these are output buffers. lguest gets this right (obviously kvm's console doesn't), resulting in continual buildup of console writes. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Acked-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
parent
162a689a13
commit
9ff4cfab82
@ -416,20 +416,16 @@ static ssize_t send_buf(struct port *port, void *in_buf, size_t in_count)
|
||||
out_vq->vq_ops->kick(out_vq);
|
||||
|
||||
if (ret < 0) {
|
||||
len = 0;
|
||||
in_count = 0;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wait till the host acknowledges it pushed out the data we
|
||||
* sent. Also ensure we return to userspace the number of
|
||||
* bytes that were successfully consumed by the host.
|
||||
*/
|
||||
/* Wait till the host acknowledges it pushed out the data we sent. */
|
||||
while (!out_vq->vq_ops->get_buf(out_vq, &len))
|
||||
cpu_relax();
|
||||
fail:
|
||||
/* We're expected to return the amount of data we wrote */
|
||||
return len;
|
||||
return in_count;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user