All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: thuth@linux.vnet.ibm.com, kvm@vger.kernel.org, rusty@au1.ibm.com,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	dahi@linux.vnet.ibm.com, pbonzini@redhat.com,
	David Miller <davem@davemloft.net>
Subject: Re: [PATCH v7 31/46] vhost: virtio 1.0 endian-ness support
Date: Mon, 1 Dec 2014 14:37:01 +0200	[thread overview]
Message-ID: <20141201123701.GB17958@redhat.com> (raw)
In-Reply-To: <20141201133353.0bbaa2e1.cornelia.huck@de.ibm.com>

On Mon, Dec 01, 2014 at 01:33:53PM +0100, Cornelia Huck wrote:
> On Sun, 30 Nov 2014 17:11:49 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >  drivers/vhost/vhost.c | 93 +++++++++++++++++++++++++++++++--------------------
> >  1 file changed, 56 insertions(+), 37 deletions(-)
> > 
> 
> > @@ -1113,18 +1120,19 @@ static int get_indirect(struct vhost_virtqueue *vq,
> >  {
> >  	struct vring_desc desc;
> >  	unsigned int i = 0, count, found = 0;
> > +	u32 len = vhost32_to_cpu(vq, indirect->len);
> >  	int ret;
> > 
> >  	/* Sanity check */
> > -	if (unlikely(indirect->len % sizeof desc)) {
> > +	if (unlikely(len % sizeof desc)) {
> >  		vq_err(vq, "Invalid length in indirect descriptor: "
> >  		       "len 0x%llx not multiple of 0x%zx\n",
> > -		       (unsigned long long)indirect->len,
> > +		       (unsigned long long)vhost32_to_cpu(vq, indirect->len),
> 
> Can't you use len here?

Not if I want error message to be readable.

> >  		       sizeof desc);
> >  		return -EINVAL;
> >  	}
> > 
> > -	ret = translate_desc(vq, indirect->addr, indirect->len, vq->indirect,
> > +	ret = translate_desc(vq, vhost64_to_cpu(vq, indirect->addr), len, vq->indirect,
> >  			     UIO_MAXIOV);
> >  	if (unlikely(ret < 0)) {
> >  		vq_err(vq, "Translation failure %d in indirect.\n", ret);
> 
> 
> > @@ -1404,7 +1422,7 @@ int vhost_add_used_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads,
> > 
> >  	/* Make sure buffer is written before we update index. */
> >  	smp_wmb();
> > -	if (put_user(vq->last_used_idx, &vq->used->idx)) {
> > +	if (__put_user(cpu_to_vhost16(vq, vq->last_used_idx), &vq->used->idx)) {
> 
> Why s/put_user/__put_user/ - I don't see how endianness conversions
> should have an influence there?

We should generally to __ variants since addresses are pre-validated.
But I agree - should be a separate patch.

> 
> >  		vq_err(vq, "Failed to increment used idx");
> >  		return -EFAULT;
> >  	}
> 
> > @@ -1449,11 +1468,11 @@ static bool vhost_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
> >  	if (unlikely(!v))
> >  		return true;
> > 
> > -	if (get_user(event, vhost_used_event(vq))) {
> > +	if (__get_user(event, vhost_used_event(vq))) {
> 
> Dito: why the change?

Same. Will split this out, it's unrelated to virtio 1.0.

> >  		vq_err(vq, "Failed to get used event idx");
> >  		return true;
> >  	}
> > -	return vring_need_event(event, new, old);
> > +	return vring_need_event(vhost16_to_cpu(vq, event), new, old);
> >  }
> > 
> >  /* This actually signals the guest, using eventfd. */

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, David Miller <davem@davemloft.net>,
	rusty@au1.ibm.com, nab@linux-iscsi.org, pbonzini@redhat.com,
	thuth@linux.vnet.ibm.com, dahi@linux.vnet.ibm.com,
	kvm@vger.kernel.org, virtualization@lists.linux-foundation.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH v7 31/46] vhost: virtio 1.0 endian-ness support
Date: Mon, 1 Dec 2014 14:37:01 +0200	[thread overview]
Message-ID: <20141201123701.GB17958@redhat.com> (raw)
In-Reply-To: <20141201133353.0bbaa2e1.cornelia.huck@de.ibm.com>

On Mon, Dec 01, 2014 at 01:33:53PM +0100, Cornelia Huck wrote:
> On Sun, 30 Nov 2014 17:11:49 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >  drivers/vhost/vhost.c | 93 +++++++++++++++++++++++++++++++--------------------
> >  1 file changed, 56 insertions(+), 37 deletions(-)
> > 
> 
> > @@ -1113,18 +1120,19 @@ static int get_indirect(struct vhost_virtqueue *vq,
> >  {
> >  	struct vring_desc desc;
> >  	unsigned int i = 0, count, found = 0;
> > +	u32 len = vhost32_to_cpu(vq, indirect->len);
> >  	int ret;
> > 
> >  	/* Sanity check */
> > -	if (unlikely(indirect->len % sizeof desc)) {
> > +	if (unlikely(len % sizeof desc)) {
> >  		vq_err(vq, "Invalid length in indirect descriptor: "
> >  		       "len 0x%llx not multiple of 0x%zx\n",
> > -		       (unsigned long long)indirect->len,
> > +		       (unsigned long long)vhost32_to_cpu(vq, indirect->len),
> 
> Can't you use len here?

Not if I want error message to be readable.

> >  		       sizeof desc);
> >  		return -EINVAL;
> >  	}
> > 
> > -	ret = translate_desc(vq, indirect->addr, indirect->len, vq->indirect,
> > +	ret = translate_desc(vq, vhost64_to_cpu(vq, indirect->addr), len, vq->indirect,
> >  			     UIO_MAXIOV);
> >  	if (unlikely(ret < 0)) {
> >  		vq_err(vq, "Translation failure %d in indirect.\n", ret);
> 
> 
> > @@ -1404,7 +1422,7 @@ int vhost_add_used_n(struct vhost_virtqueue *vq, struct vring_used_elem *heads,
> > 
> >  	/* Make sure buffer is written before we update index. */
> >  	smp_wmb();
> > -	if (put_user(vq->last_used_idx, &vq->used->idx)) {
> > +	if (__put_user(cpu_to_vhost16(vq, vq->last_used_idx), &vq->used->idx)) {
> 
> Why s/put_user/__put_user/ - I don't see how endianness conversions
> should have an influence there?

We should generally to __ variants since addresses are pre-validated.
But I agree - should be a separate patch.

> 
> >  		vq_err(vq, "Failed to increment used idx");
> >  		return -EFAULT;
> >  	}
> 
> > @@ -1449,11 +1468,11 @@ static bool vhost_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
> >  	if (unlikely(!v))
> >  		return true;
> > 
> > -	if (get_user(event, vhost_used_event(vq))) {
> > +	if (__get_user(event, vhost_used_event(vq))) {
> 
> Dito: why the change?

Same. Will split this out, it's unrelated to virtio 1.0.

> >  		vq_err(vq, "Failed to get used event idx");
> >  		return true;
> >  	}
> > -	return vring_need_event(event, new, old);
> > +	return vring_need_event(vhost16_to_cpu(vq, event), new, old);
> >  }
> > 
> >  /* This actually signals the guest, using eventfd. */

  reply	other threads:[~2014-12-01 12:37 UTC|newest]

Thread overview: 187+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-30 15:09 [PATCH v7 00/46] linux: towards virtio-1 guest support Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 01/46] virtio: add low-level APIs for feature bits Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-12-01  9:08   ` Cornelia Huck
2014-12-01  9:08     ` Cornelia Huck
2014-11-30 15:09 ` [PATCH v7 02/46] virtio: use u32, not bitmap for features Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 03/46] mic_virtio: robust feature array size calculation Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 04/46] virtio: add support for 64 bit features Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 05/46] virtio: assert 32 bit features in transports Michael S. Tsirkin
2014-11-30 15:09 ` Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 06/46] virtio_ccw: add support for 64 bit features Michael S. Tsirkin
2014-12-01  7:52   ` David Hildenbrand
2014-11-30 15:09 ` [PATCH v7 07/46] virtio: add virtio 1.0 feature bit Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-11-30 15:09 ` [PATCH v7 08/46] virtio: memory access APIs Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-12-01  9:56   ` Cornelia Huck
2014-12-01  9:56     ` Cornelia Huck
2014-11-30 15:09 ` [PATCH v7 09/46] virtio_ring: switch to new " Michael S. Tsirkin
2014-11-30 15:09   ` Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 10/46] virtio_config: endian conversion for v1.0 Michael S. Tsirkin
2014-11-30 15:10 ` Michael S. Tsirkin
2014-12-01  7:57   ` David Hildenbrand
2014-12-01  7:57     ` David Hildenbrand
2014-11-30 15:10 ` [PATCH v7 11/46] virtio: allow transports to get avail/used addresses Michael S. Tsirkin
2014-11-30 15:10 ` Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 12/46] virtio: set FEATURES_OK Michael S. Tsirkin
2014-11-30 15:10   ` Michael S. Tsirkin
2014-12-01 10:11   ` Cornelia Huck
     [not found]   ` <1417359787-10138-13-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-01 10:11     ` Cornelia Huck
2014-12-01 10:11       ` Cornelia Huck
2014-11-30 15:10 ` [PATCH v7 13/46] virtio: simplify feature bit handling Michael S. Tsirkin
2014-12-01  8:06   ` David Hildenbrand
2014-12-01  8:06     ` David Hildenbrand
2014-12-01 10:12   ` Cornelia Huck
2014-12-01 10:12     ` Cornelia Huck
2014-11-30 15:10 ` Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 14/46] virtio: add legacy feature table support Michael S. Tsirkin
2014-12-01 11:23   ` Cornelia Huck
2014-12-01 11:23     ` Cornelia Huck
2014-11-30 15:10 ` Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 15/46] virtio_net: v1.0 endianness Michael S. Tsirkin
2014-11-30 15:10 ` Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 16/46] virtio_blk: v1.0 support Michael S. Tsirkin
2014-11-30 15:10   ` Michael S. Tsirkin
2014-12-01  8:16   ` David Hildenbrand
2014-12-01  8:16     ` David Hildenbrand
2014-12-01  9:26     ` Michael S. Tsirkin
2014-12-01  9:26       ` Michael S. Tsirkin
2014-12-01 11:33       ` Cornelia Huck
2014-12-01 11:33         ` Cornelia Huck
2014-12-01 11:46         ` Michael S. Tsirkin
2014-12-01 11:46           ` Michael S. Tsirkin
2014-12-01 12:02           ` Cornelia Huck
2014-12-01 12:02             ` Cornelia Huck
2014-12-01 12:19             ` Michael S. Tsirkin
2014-12-01 12:19               ` Michael S. Tsirkin
2014-12-01 12:34             ` Michael S. Tsirkin
2014-12-01 12:34               ` Michael S. Tsirkin
     [not found]               ` <20141201123455.GA17958-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-01 12:40                 ` Cornelia Huck
2014-12-01 12:40                   ` Cornelia Huck
2014-12-01 12:51                   ` Michael S. Tsirkin
2014-12-01 12:51                     ` Michael S. Tsirkin
2014-12-01 13:00                     ` Cornelia Huck
2014-12-01 13:00                       ` Cornelia Huck
2014-12-01 13:47                       ` Michael S. Tsirkin
2014-12-01 13:47                         ` Michael S. Tsirkin
2014-12-01 14:19                         ` Cornelia Huck
     [not found]                         ` <20141201134719.GA18305-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-01 14:19                           ` Cornelia Huck
2014-12-01 14:19                             ` Cornelia Huck
2014-12-01 12:40               ` Cornelia Huck
2014-12-01  9:28     ` Michael S. Tsirkin
2014-12-01  9:28       ` Michael S. Tsirkin
     [not found]       ` <20141201092850.GD15607-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-01 10:01         ` David Hildenbrand
2014-12-01 10:01           ` David Hildenbrand
2014-12-01 11:28           ` Cornelia Huck
2014-12-01 11:28             ` Cornelia Huck
2014-12-01 10:01       ` David Hildenbrand
2014-11-30 15:10 ` [PATCH v7 17/46] KVM: s390: Set virtio-ccw transport revision Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 18/46] KVM: s390: virtio-ccw revision 1 SET_VQ Michael S. Tsirkin
2014-12-01  8:20   ` David Hildenbrand
2014-11-30 15:10 ` [PATCH v7 19/46] KVM: s390 allow virtio_ccw status writes to fail Michael S. Tsirkin
2014-11-30 15:10 ` [PATCH v7 20/46] KVM: s390: enable virtio-ccw revision 1 Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 21/46] virtio_blk: make serial attribute static Michael S. Tsirkin
2014-11-30 15:11   ` Michael S. Tsirkin
2014-12-01 11:34   ` Cornelia Huck
2014-12-01 11:34     ` Cornelia Huck
2014-11-30 15:11 ` [PATCH v7 22/46] virtio_blk: fix race at module removal Michael S. Tsirkin
2014-12-01 11:36   ` Cornelia Huck
2014-12-01 11:36     ` Cornelia Huck
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 23/46] virtio_net: pass vi around Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 24/46] virtio_net: get rid of virtio_net_hdr/skb_vnet_hdr Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 25/46] virtio_net: stricter short buffer length checks Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 26/46] virtio_net: bigger header when VERSION_1 is set Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 27/46] virtio_net: enable v1.0 support Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-12-01 11:40   ` Cornelia Huck
2014-12-01 11:40     ` Cornelia Huck
2014-12-01 11:47     ` Michael S. Tsirkin
2014-12-01 11:47       ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 28/46] vhost: make features 64 bit Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:44   ` Sergei Shtylyov
2014-11-30 15:44     ` Sergei Shtylyov
2014-12-01  4:12     ` Ben Hutchings
2014-12-01  4:12       ` Ben Hutchings
2014-12-01  9:19       ` Michael S. Tsirkin
2014-12-01  9:19         ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 29/46] vhost: add memory access wrappers Michael S. Tsirkin
2014-11-30 15:11   ` Michael S. Tsirkin
2014-12-01 12:13   ` Cornelia Huck
2014-12-01 12:13     ` Cornelia Huck
2014-11-30 15:11 ` [PATCH v7 30/46] vhost/net: force len for TX to host endian Michael S. Tsirkin
2014-12-01 12:20   ` Cornelia Huck
2014-12-01 12:20     ` Cornelia Huck
2014-12-01 12:33     ` Michael S. Tsirkin
2014-12-01 12:33       ` Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 31/46] vhost: virtio 1.0 endian-ness support Michael S. Tsirkin
2014-12-01 12:33   ` Cornelia Huck
2014-12-01 12:33     ` Cornelia Huck
2014-12-01 12:37     ` Michael S. Tsirkin [this message]
2014-12-01 12:37       ` Michael S. Tsirkin
2014-12-01 12:42       ` Cornelia Huck
2014-12-01 12:42         ` Cornelia Huck
2014-12-01 12:49         ` Michael S. Tsirkin
2014-12-01 12:49           ` Michael S. Tsirkin
2014-12-01 15:45     ` Michael S. Tsirkin
2014-12-01 15:45       ` Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-11-30 15:11 ` [PATCH v7 32/46] vhost/net: virtio 1.0 byte swap Michael S. Tsirkin
2014-11-30 15:11   ` Michael S. Tsirkin
2014-12-01 12:35   ` Cornelia Huck
2014-12-01 12:35     ` Cornelia Huck
2014-11-30 15:11 ` [PATCH v7 33/46] vhost/net: larger header for virtio 1.0 Michael S. Tsirkin
2014-11-30 15:11 ` Michael S. Tsirkin
2014-12-01 12:35   ` Cornelia Huck
2014-12-01 12:35     ` Cornelia Huck
2014-11-30 15:12 ` [PATCH v7 34/46] virtio_net: disable mac write " Michael S. Tsirkin
2014-12-01 11:41   ` Cornelia Huck
2014-12-01 11:41     ` Cornelia Huck
2014-11-30 15:12 ` Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 35/46] vhost/net: enable " Michael S. Tsirkin
2014-11-30 15:12   ` Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 36/46] vhost/net: suppress compiler warning Michael S. Tsirkin
2014-12-01 12:37   ` Cornelia Huck
2014-12-01 12:37     ` Cornelia Huck
2014-12-01 13:48     ` Michael S. Tsirkin
2014-12-01 13:48       ` Michael S. Tsirkin
2014-12-01 14:21       ` Cornelia Huck
2014-12-01 14:21         ` Cornelia Huck
2014-12-01 15:12         ` Michael S. Tsirkin
2014-12-01 15:12           ` Michael S. Tsirkin
2014-12-01 15:18           ` Cornelia Huck
2014-12-01 15:18             ` Cornelia Huck
2014-11-30 15:12 ` Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 37/46] tun: move internal flag defines out of uapi Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 38/46] tun: drop most type defines Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 39/46] tun: add VNET_LE flag Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 40/46] tun: TUN_VNET_LE support, fix sparse warnings for virtio headers Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 41/46] macvtap: TUN_VNET_LE support Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 42/46] virtio_scsi: v1.0 support Michael S. Tsirkin
2014-12-01 12:50   ` Cornelia Huck
2014-12-01 12:50     ` Cornelia Huck
2014-12-01 12:53     ` Michael S. Tsirkin
2014-12-01 12:53       ` Michael S. Tsirkin
2014-12-01 12:54       ` Michael S. Tsirkin
2014-12-01 12:54         ` Michael S. Tsirkin
2014-12-01 12:55       ` Cornelia Huck
2014-12-01 12:55         ` Cornelia Huck
2014-11-30 15:12 ` Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 43/46] virtio_scsi: move to uapi Michael S. Tsirkin
2014-11-30 15:12 ` [PATCH v7 44/46] virtio_scsi: export to userspace Michael S. Tsirkin
     [not found]   ` <1417359787-10138-45-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-11-30 21:43     ` Prabhakar Lad
2014-11-30 21:43       ` Prabhakar Lad
2014-11-30 21:43   ` Prabhakar Lad
2014-11-30 15:12 ` Michael S. Tsirkin
2014-11-30 15:13 ` [PATCH v7 45/46] vhost/scsi: partial virtio 1.0 support Michael S. Tsirkin
2014-11-30 15:13 ` Michael S. Tsirkin
2014-11-30 15:13 ` [PATCH v7 46/46] af_packet: virtio 1.0 stubs Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141201123701.GB17958@redhat.com \
    --to=mst@redhat.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=dahi@linux.vnet.ibm.com \
    --cc=davem@davemloft.net \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rusty@au1.ibm.com \
    --cc=thuth@linux.vnet.ibm.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.