diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2016-12-05 23:07:15 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2016-12-14 23:59:19 -0500 |
commit | f83f12d660d11718d3eed9d979ee03e83aa55544 (patch) | |
tree | 50e595e12928065b9b12135cd66af6c71cf728d1 | |
parent | 819483d806f4324b42a25f8dd760735ae659141c (diff) |
vsock/virtio: fix src/dst cid format
These fields are 64 bit, using le32_to_cpu and friends
on these will not do the right thing.
Fix this up.
Cc: stable@vger.kernel.org
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | net/vmw_vsock/virtio_transport_common.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c index 6fd923eaeba9..849c4ad0411e 100644 --- a/net/vmw_vsock/virtio_transport_common.c +++ b/net/vmw_vsock/virtio_transport_common.c | |||
@@ -605,9 +605,9 @@ static int virtio_transport_reset_no_sock(struct virtio_vsock_pkt *pkt) | |||
605 | return 0; | 605 | return 0; |
606 | 606 | ||
607 | pkt = virtio_transport_alloc_pkt(&info, 0, | 607 | pkt = virtio_transport_alloc_pkt(&info, 0, |
608 | le32_to_cpu(pkt->hdr.dst_cid), | 608 | le64_to_cpu(pkt->hdr.dst_cid), |
609 | le32_to_cpu(pkt->hdr.dst_port), | 609 | le32_to_cpu(pkt->hdr.dst_port), |
610 | le32_to_cpu(pkt->hdr.src_cid), | 610 | le64_to_cpu(pkt->hdr.src_cid), |
611 | le32_to_cpu(pkt->hdr.src_port)); | 611 | le32_to_cpu(pkt->hdr.src_port)); |
612 | if (!pkt) | 612 | if (!pkt) |
613 | return -ENOMEM; | 613 | return -ENOMEM; |
@@ -822,7 +822,7 @@ virtio_transport_send_response(struct vsock_sock *vsk, | |||
822 | struct virtio_vsock_pkt_info info = { | 822 | struct virtio_vsock_pkt_info info = { |
823 | .op = VIRTIO_VSOCK_OP_RESPONSE, | 823 | .op = VIRTIO_VSOCK_OP_RESPONSE, |
824 | .type = VIRTIO_VSOCK_TYPE_STREAM, | 824 | .type = VIRTIO_VSOCK_TYPE_STREAM, |
825 | .remote_cid = le32_to_cpu(pkt->hdr.src_cid), | 825 | .remote_cid = le64_to_cpu(pkt->hdr.src_cid), |
826 | .remote_port = le32_to_cpu(pkt->hdr.src_port), | 826 | .remote_port = le32_to_cpu(pkt->hdr.src_port), |
827 | .reply = true, | 827 | .reply = true, |
828 | }; | 828 | }; |
@@ -862,9 +862,9 @@ virtio_transport_recv_listen(struct sock *sk, struct virtio_vsock_pkt *pkt) | |||
862 | child->sk_state = SS_CONNECTED; | 862 | child->sk_state = SS_CONNECTED; |
863 | 863 | ||
864 | vchild = vsock_sk(child); | 864 | vchild = vsock_sk(child); |
865 | vsock_addr_init(&vchild->local_addr, le32_to_cpu(pkt->hdr.dst_cid), | 865 | vsock_addr_init(&vchild->local_addr, le64_to_cpu(pkt->hdr.dst_cid), |
866 | le32_to_cpu(pkt->hdr.dst_port)); | 866 | le32_to_cpu(pkt->hdr.dst_port)); |
867 | vsock_addr_init(&vchild->remote_addr, le32_to_cpu(pkt->hdr.src_cid), | 867 | vsock_addr_init(&vchild->remote_addr, le64_to_cpu(pkt->hdr.src_cid), |
868 | le32_to_cpu(pkt->hdr.src_port)); | 868 | le32_to_cpu(pkt->hdr.src_port)); |
869 | 869 | ||
870 | vsock_insert_connected(vchild); | 870 | vsock_insert_connected(vchild); |
@@ -903,9 +903,9 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt) | |||
903 | struct sock *sk; | 903 | struct sock *sk; |
904 | bool space_available; | 904 | bool space_available; |
905 | 905 | ||
906 | vsock_addr_init(&src, le32_to_cpu(pkt->hdr.src_cid), | 906 | vsock_addr_init(&src, le64_to_cpu(pkt->hdr.src_cid), |
907 | le32_to_cpu(pkt->hdr.src_port)); | 907 | le32_to_cpu(pkt->hdr.src_port)); |
908 | vsock_addr_init(&dst, le32_to_cpu(pkt->hdr.dst_cid), | 908 | vsock_addr_init(&dst, le64_to_cpu(pkt->hdr.dst_cid), |
909 | le32_to_cpu(pkt->hdr.dst_port)); | 909 | le32_to_cpu(pkt->hdr.dst_port)); |
910 | 910 | ||
911 | trace_virtio_transport_recv_pkt(src.svm_cid, src.svm_port, | 911 | trace_virtio_transport_recv_pkt(src.svm_cid, src.svm_port, |