diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2018-07-04 11:24:26 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2018-07-04 11:24:26 -0400 |
commit | ad7d85bceeff0f0bc632de57f4902db7ba34cd9e (patch) | |
tree | a6a58ba9eb1eb67aeaf1e8ff9c4a50fd507cf1b7 | |
parent | 26003835520c52935fa8cb32756383d043927478 (diff) | |
download | longterm-queue-4.12-ad7d85bceeff0f0bc632de57f4902db7ba34cd9e.tar.gz |
vhost: drop post 4.12 patch
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | queue/series | 1 | ||||
-rw-r--r-- | queue/vhost-fix-skb-leak-in-handle_rx.patch | 69 |
2 files changed, 0 insertions, 70 deletions
diff --git a/queue/series b/queue/series index ef65ce2..944418b 100644 --- a/queue/series +++ b/queue/series @@ -122,4 +122,3 @@ tcp-remove-buggy-call-to-tcp_v6_restore_cb.patch tipc-call-tipc_rcv-only-if-bearer-is-up-in-tipc_udp_.patch tipc-fix-memory-leak-in-tipc_accept_from_sock.patch usbnet-fix-alignment-for-frames-with-no-ethernet-hea.patch -vhost-fix-skb-leak-in-handle_rx.patch diff --git a/queue/vhost-fix-skb-leak-in-handle_rx.patch b/queue/vhost-fix-skb-leak-in-handle_rx.patch deleted file mode 100644 index e8441fe..0000000 --- a/queue/vhost-fix-skb-leak-in-handle_rx.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 6e474083f3daf3a3546737f5d7d502ad12eb257c Mon Sep 17 00:00:00 2001 -From: Wei Xu <wexu@redhat.com> -Date: Fri, 1 Dec 2017 05:10:36 -0500 -Subject: [PATCH] vhost: fix skb leak in handle_rx() - -commit 6e474083f3daf3a3546737f5d7d502ad12eb257c upstream. - -Matthew found a roughly 40% tcp throughput regression with commit -c67df11f(vhost_net: try batch dequing from skb array) as discussed -in the following thread: -https://www.mail-archive.com/netdev@vger.kernel.org/msg187936.html - -Eventually we figured out that it was a skb leak in handle_rx() -when sending packets to the VM. This usually happens when a guest -can not drain out vq as fast as vhost fills in, afterwards it sets -off the traffic jam and leaks skb(s) which occurs as no headcount -to send on the vq from vhost side. - -This can be avoided by making sure we have got enough headcount -before actually consuming a skb from the batched rx array while -transmitting, which is simply done by moving checking the zero -headcount a bit ahead. - -Signed-off-by: Wei Xu <wexu@redhat.com> -Reported-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com> -Acked-by: Michael S. Tsirkin <mst@redhat.com> -Signed-off-by: David S. Miller <davem@davemloft.net> - -diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c -index 8d626d7c2e7e..c7bdeb655646 100644 ---- a/drivers/vhost/net.c -+++ b/drivers/vhost/net.c -@@ -778,16 +778,6 @@ static void handle_rx(struct vhost_net *net) - /* On error, stop handling until the next kick. */ - if (unlikely(headcount < 0)) - goto out; -- if (nvq->rx_array) -- msg.msg_control = vhost_net_buf_consume(&nvq->rxq); -- /* On overrun, truncate and discard */ -- if (unlikely(headcount > UIO_MAXIOV)) { -- iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1); -- err = sock->ops->recvmsg(sock, &msg, -- 1, MSG_DONTWAIT | MSG_TRUNC); -- pr_debug("Discarded rx packet: len %zd\n", sock_len); -- continue; -- } - /* OK, now we need to know about added descriptors. */ - if (!headcount) { - if (unlikely(vhost_enable_notify(&net->dev, vq))) { -@@ -800,6 +790,16 @@ static void handle_rx(struct vhost_net *net) - * they refilled. */ - goto out; - } -+ if (nvq->rx_array) -+ msg.msg_control = vhost_net_buf_consume(&nvq->rxq); -+ /* On overrun, truncate and discard */ -+ if (unlikely(headcount > UIO_MAXIOV)) { -+ iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1); -+ err = sock->ops->recvmsg(sock, &msg, -+ 1, MSG_DONTWAIT | MSG_TRUNC); -+ pr_debug("Discarded rx packet: len %zd\n", sock_len); -+ continue; -+ } - /* We don't need to be notified again. */ - iov_iter_init(&msg.msg_iter, READ, vq->iov, in, vhost_len); - fixup = msg.msg_iter; --- -2.15.0 - |