Re: [PATCH 3/4] virtio: console makes incorrect assumption about virtio API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On (Tue) Mar 30 2010 [15:49:22], Rusty Russell wrote:
> 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@xxxxxxxxxxxxxxx>
> To: Amit Shah <amit.shah@xxxxxxxxxx>

Acked-by: Amit Shah <amit.shah@xxxxxxxxxx>

> ---
>  drivers/char/virtio_console.c |   10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -415,20 +415,16 @@ static ssize_t send_buf(struct port *por
>  	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;
>  }
>  
>  /*
> 

		Amit
-- 
http://log.amitshah.net/
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/virtualization

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux