| From f83f12d660d11718d3eed9d979ee03e83aa55544 Mon Sep 17 00:00:00 2001 |
| From: "Michael S. Tsirkin" <mst@redhat.com> |
| Date: Tue, 6 Dec 2016 06:07:15 +0200 |
| Subject: vsock/virtio: fix src/dst cid format |
| |
| From: Michael S. Tsirkin <mst@redhat.com> |
| |
| commit f83f12d660d11718d3eed9d979ee03e83aa55544 upstream. |
| |
| These fields are 64 bit, using le32_to_cpu and friends |
| on these will not do the right thing. |
| Fix this up. |
| |
| Signed-off-by: Michael S. Tsirkin <mst@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/vmw_vsock/virtio_transport_common.c | 14 +++++++------- |
| 1 file changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/net/vmw_vsock/virtio_transport_common.c |
| +++ b/net/vmw_vsock/virtio_transport_common.c |
| @@ -606,9 +606,9 @@ static int virtio_transport_reset_no_soc |
| return 0; |
| |
| pkt = virtio_transport_alloc_pkt(&info, 0, |
| - le32_to_cpu(pkt->hdr.dst_cid), |
| + le64_to_cpu(pkt->hdr.dst_cid), |
| le32_to_cpu(pkt->hdr.dst_port), |
| - le32_to_cpu(pkt->hdr.src_cid), |
| + le64_to_cpu(pkt->hdr.src_cid), |
| le32_to_cpu(pkt->hdr.src_port)); |
| if (!pkt) |
| return -ENOMEM; |
| @@ -823,7 +823,7 @@ virtio_transport_send_response(struct vs |
| struct virtio_vsock_pkt_info info = { |
| .op = VIRTIO_VSOCK_OP_RESPONSE, |
| .type = VIRTIO_VSOCK_TYPE_STREAM, |
| - .remote_cid = le32_to_cpu(pkt->hdr.src_cid), |
| + .remote_cid = le64_to_cpu(pkt->hdr.src_cid), |
| .remote_port = le32_to_cpu(pkt->hdr.src_port), |
| .reply = true, |
| }; |
| @@ -863,9 +863,9 @@ virtio_transport_recv_listen(struct sock |
| child->sk_state = SS_CONNECTED; |
| |
| vchild = vsock_sk(child); |
| - vsock_addr_init(&vchild->local_addr, le32_to_cpu(pkt->hdr.dst_cid), |
| + vsock_addr_init(&vchild->local_addr, le64_to_cpu(pkt->hdr.dst_cid), |
| le32_to_cpu(pkt->hdr.dst_port)); |
| - vsock_addr_init(&vchild->remote_addr, le32_to_cpu(pkt->hdr.src_cid), |
| + vsock_addr_init(&vchild->remote_addr, le64_to_cpu(pkt->hdr.src_cid), |
| le32_to_cpu(pkt->hdr.src_port)); |
| |
| vsock_insert_connected(vchild); |
| @@ -904,9 +904,9 @@ void virtio_transport_recv_pkt(struct vi |
| struct sock *sk; |
| bool space_available; |
| |
| - vsock_addr_init(&src, le32_to_cpu(pkt->hdr.src_cid), |
| + vsock_addr_init(&src, le64_to_cpu(pkt->hdr.src_cid), |
| le32_to_cpu(pkt->hdr.src_port)); |
| - vsock_addr_init(&dst, le32_to_cpu(pkt->hdr.dst_cid), |
| + vsock_addr_init(&dst, le64_to_cpu(pkt->hdr.dst_cid), |
| le32_to_cpu(pkt->hdr.dst_port)); |
| |
| trace_virtio_transport_recv_pkt(src.svm_cid, src.svm_port, |