2018-06-20 13:52:51

by Claudio Imbrenda

[permalink] [raw]
Subject: [PATCH v1 1/1] VSOCK: fix loopback on big-endian systems

The dst_cid and src_cid are 64 bits, therefore 64 bit accessors should be
used, and in fact in virtio_transport_common.c only 64 bit accessors are
used. Using 32 bit accessors for 64 bit values breaks big endian systems.

This patch fixes a wrong use of le32_to_cpu in virtio_transport_send_pkt.

Fixes: b9116823189e85ccf384 ("VSOCK: add loopback to virtio_transport")

Signed-off-by: Claudio Imbrenda <[email protected]>
---
net/vmw_vsock/virtio_transport.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 8e03bd3..5d3cce9 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -201,7 +201,7 @@ virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt)
return -ENODEV;
}

- if (le32_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid)
+ if (le64_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid)
return virtio_transport_send_pkt_loopback(vsock, pkt);

if (pkt->reply)
--
2.7.4



2018-06-21 16:09:29

by Stefan Hajnoczi

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] VSOCK: fix loopback on big-endian systems

On Wed, Jun 20, 2018 at 03:51:51PM +0200, Claudio Imbrenda wrote:
> The dst_cid and src_cid are 64 bits, therefore 64 bit accessors should be
> used, and in fact in virtio_transport_common.c only 64 bit accessors are
> used. Using 32 bit accessors for 64 bit values breaks big endian systems.
>
> This patch fixes a wrong use of le32_to_cpu in virtio_transport_send_pkt.
>
> Fixes: b9116823189e85ccf384 ("VSOCK: add loopback to virtio_transport")
>
> Signed-off-by: Claudio Imbrenda <[email protected]>
> ---
> net/vmw_vsock/virtio_transport.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Stefan Hajnoczi <[email protected]>


Attachments:
(No filename) (681.00 B)
signature.asc (465.00 B)
Download all attachments

2018-06-22 00:36:42

by David Miller

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] VSOCK: fix loopback on big-endian systems

From: Claudio Imbrenda <[email protected]>
Date: Wed, 20 Jun 2018 15:51:51 +0200

> The dst_cid and src_cid are 64 bits, therefore 64 bit accessors should be
> used, and in fact in virtio_transport_common.c only 64 bit accessors are
> used. Using 32 bit accessors for 64 bit values breaks big endian systems.
>
> This patch fixes a wrong use of le32_to_cpu in virtio_transport_send_pkt.
>
> Fixes: b9116823189e85ccf384 ("VSOCK: add loopback to virtio_transport")
>
> Signed-off-by: Claudio Imbrenda <[email protected]>

Applied and queued up for -stable, thank you.