Jelajahi Sumber

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 <imbrenda@linux.vnet.ibm.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Claudio Imbrenda 7 tahun lalu
induk
melakukan
e5ab564c9e
1 mengubah file dengan 1 tambahan dan 1 penghapusan
  1. 1 1
      net/vmw_vsock/virtio_transport.c

+ 1 - 1
net/vmw_vsock/virtio_transport.c

@@ -201,7 +201,7 @@ virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt)
 		return -ENODEV;
 		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);
 		return virtio_transport_send_pkt_loopback(vsock, pkt);
 
 
 	if (pkt->reply)
 	if (pkt->reply)