Drivers: hv: vmbus: Copy packets sent by Hyper-V out of the ring buffer
authorAndres Beltran <lkmlabelt@gmail.com>
Tue, 8 Dec 2020 04:53:11 +0000 (05:53 +0100)
committerWei Liu <wei.liu@kernel.org>
Fri, 5 Feb 2021 09:55:42 +0000 (09:55 +0000)
commita8c3209998afb5c4941b49e35b513cea9050cb4a
tree78b3020b0631cd1ea476779988be0eacecd18d7a
parent6ee1d745b7c9fd573fba142a2efdad76a9f1cb04
Drivers: hv: vmbus: Copy packets sent by Hyper-V out of the ring buffer

Pointers to ring-buffer packets sent by Hyper-V are used within the
guest VM. Hyper-V can send packets with erroneous values or modify
packet fields after they are processed by the guest. To defend
against these scenarios, return a copy of the incoming VMBus packet
after validating its length and offset fields in hv_pkt_iter_first().
In this way, the packet can no longer be modified by the host.

Signed-off-by: Andres Beltran <lkmlabelt@gmail.com>
Co-developed-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Signed-off-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: netdev@vger.kernel.org
Cc: linux-scsi@vger.kernel.org
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/20201208045311.10244-1-parri.andrea@gmail.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/channel.c
drivers/hv/hv_fcopy.c
drivers/hv/hv_kvp.c
drivers/hv/hyperv_vmbus.h
drivers/hv/ring_buffer.c
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/rndis_filter.c
drivers/scsi/storvsc_drv.c
include/linux/hyperv.h
net/vmw_vsock/hyperv_transport.c