lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 17 May 2010 14:16:36 -0700 From: David L Stevens <dlstevens@...ibm.com> To: mst@...hat.com Cc: netdev@...r.kernel.org, kvm@...r.kernel.org, virtualization@...ts.osdl.org Subject: [PATCH] [resend] fix non-mergeable buffers packet too large error handling This patch enforces single-buffer allocation when mergeable rx buffers is not enabled. Reported-by: Michael S. Tsirkin <mst@...hat.com> Signed-off-by: David L Stevens <dlstevens@...ibm.com> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 309c570..c346304 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -361,13 +361,21 @@ static void handle_rx(struct vhost_net *net) break; } /* TODO: Should check and handle checksum. */ - if (vhost_has_feature(&net->dev, VIRTIO_NET_F_MRG_RXBUF) && - memcpy_toiovecend(vq->hdr, (unsigned char *)&headcount, - offsetof(typeof(hdr), num_buffers), - sizeof hdr.num_buffers)) { - vq_err(vq, "Failed num_buffers write"); + if (vhost_has_feature(&net->dev, VIRTIO_NET_F_MRG_RXBUF)) { + if (memcpy_toiovecend(vq->hdr, + (unsigned char *)&headcount, + offsetof(typeof(hdr), + num_buffers), + sizeof hdr.num_buffers)) { + vq_err(vq, "Failed num_buffers write"); + vhost_discard_desc(vq, headcount); + break; + } + } else if (headcount > 1) { + vq_err(vq, "rx packet too large (%d) for guest", + sock_len); vhost_discard_desc(vq, headcount); - break; + continue; } vhost_add_used_and_signal_n(&net->dev, vq, vq->heads, headcount); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists