* [PULL 0/1] Net patches
@ 2024-01-25 8:47 Jason Wang
2024-01-25 8:47 ` [PULL 1/1] virtio-net: correctly copy vnet header when flushing TX Jason Wang
2024-01-26 13:09 ` [PULL 0/1] Net patches Peter Maydell
0 siblings, 2 replies; 3+ messages in thread
From: Jason Wang @ 2024-01-25 8:47 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: Jason Wang
The following changes since commit 4a4efae44f19528589204581e9e2fab69c5d39aa:
Merge tag 'pull-hex-20240121' of https://github.com/quic/qemu into staging (2024-01-23 13:40:45 +0000)
are available in the Git repository at:
https://github.com/jasowang/qemu.git net-pull-request
for you to fetch changes up to 2220e8189fb94068dbad333228659fbac819abb0:
virtio-net: correctly copy vnet header when flushing TX (2024-01-25 14:58:00 +0800)
----------------------------------------------------------------
----------------------------------------------------------------
Jason Wang (1):
virtio-net: correctly copy vnet header when flushing TX
hw/net/virtio-net.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread* [PULL 1/1] virtio-net: correctly copy vnet header when flushing TX 2024-01-25 8:47 [PULL 0/1] Net patches Jason Wang @ 2024-01-25 8:47 ` Jason Wang 2024-01-26 13:09 ` [PULL 0/1] Net patches Peter Maydell 1 sibling, 0 replies; 3+ messages in thread From: Jason Wang @ 2024-01-25 8:47 UTC (permalink / raw) To: qemu-devel, peter.maydell Cc: Jason Wang, Xiao Lei, Yuri Benditovich, qemu-stable, Mauro Matteo Cascella, Michael Tokarev When HASH_REPORT is negotiated, the guest_hdr_len might be larger than the size of the mergeable rx buffer header. Using virtio_net_hdr_mrg_rxbuf during the header swap might lead a stack overflow in this case. Fixing this by using virtio_net_hdr_v1_hash instead. Reported-by: Xiao Lei <leixiao.nop@zju.edu.cn> Cc: Yuri Benditovich <yuri.benditovich@daynix.com> Cc: qemu-stable@nongnu.org Cc: Mauro Matteo Cascella <mcascell@redhat.com> Fixes: CVE-2023-6693 Fixes: e22f0603fb2f ("virtio-net: reference implementation of hash report") Reviewed-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Jason Wang <jasowang@redhat.com> --- hw/net/virtio-net.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 7a2846fa1c..5a79bc3a3a 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -674,6 +674,11 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs, n->mergeable_rx_bufs = mergeable_rx_bufs; + /* + * Note: when extending the vnet header, please make sure to + * change the vnet header copying logic in virtio_net_flush_tx() + * as well. + */ if (version_1) { n->guest_hdr_len = hash_report ? sizeof(struct virtio_net_hdr_v1_hash) : @@ -2693,7 +2698,7 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q) ssize_t ret; unsigned int out_num; struct iovec sg[VIRTQUEUE_MAX_SIZE], sg2[VIRTQUEUE_MAX_SIZE + 1], *out_sg; - struct virtio_net_hdr_mrg_rxbuf mhdr; + struct virtio_net_hdr_v1_hash vhdr; elem = virtqueue_pop(q->tx_vq, sizeof(VirtQueueElement)); if (!elem) { @@ -2710,7 +2715,7 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q) } if (n->has_vnet_hdr) { - if (iov_to_buf(out_sg, out_num, 0, &mhdr, n->guest_hdr_len) < + if (iov_to_buf(out_sg, out_num, 0, &vhdr, n->guest_hdr_len) < n->guest_hdr_len) { virtio_error(vdev, "virtio-net header incorrect"); virtqueue_detach_element(q->tx_vq, elem, 0); @@ -2718,8 +2723,8 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q) return -EINVAL; } if (n->needs_vnet_hdr_swap) { - virtio_net_hdr_swap(vdev, (void *) &mhdr); - sg2[0].iov_base = &mhdr; + virtio_net_hdr_swap(vdev, (void *) &vhdr); + sg2[0].iov_base = &vhdr; sg2[0].iov_len = n->guest_hdr_len; out_num = iov_copy(&sg2[1], ARRAY_SIZE(sg2) - 1, out_sg, out_num, -- 2.42.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PULL 0/1] Net patches 2024-01-25 8:47 [PULL 0/1] Net patches Jason Wang 2024-01-25 8:47 ` [PULL 1/1] virtio-net: correctly copy vnet header when flushing TX Jason Wang @ 2024-01-26 13:09 ` Peter Maydell 1 sibling, 0 replies; 3+ messages in thread From: Peter Maydell @ 2024-01-26 13:09 UTC (permalink / raw) To: Jason Wang; +Cc: qemu-devel On Thu, 25 Jan 2024 at 08:47, Jason Wang <jasowang@redhat.com> wrote: > > The following changes since commit 4a4efae44f19528589204581e9e2fab69c5d39aa: > > Merge tag 'pull-hex-20240121' of https://github.com/quic/qemu into staging (2024-01-23 13:40:45 +0000) > > are available in the Git repository at: > > https://github.com/jasowang/qemu.git net-pull-request > > for you to fetch changes up to 2220e8189fb94068dbad333228659fbac819abb0: > > virtio-net: correctly copy vnet header when flushing TX (2024-01-25 14:58:00 +0800) > > ---------------------------------------------------------------- > > ---------------------------------------------------------------- > Jason Wang (1): > virtio-net: correctly copy vnet header when flushing TX Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/9.0 for any user-visible changes. -- PMM ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-01-26 13:10 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-01-25 8:47 [PULL 0/1] Net patches Jason Wang 2024-01-25 8:47 ` [PULL 1/1] virtio-net: correctly copy vnet header when flushing TX Jason Wang 2024-01-26 13:09 ` [PULL 0/1] Net patches Peter Maydell
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.