virtio_net: do not reschedule rx refill forever

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Wednesday, July 7, 2010 - 7:59 pm

Gitweb:     http://git.kernel.org/linus/1788f49548860fa1c861ee3454d47b466c877e43
Commit:     1788f49548860fa1c861ee3454d47b466c877e43
Parent:     4a49043223e5047c8f60a09f7b2927a2e6e8dfc7
Author:     Michael S. Tsirkin <mst@redhat.com>
AuthorDate: Fri Jul 2 16:32:55 2010 +0000
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Fri Jul 2 22:27:25 2010 -0700

    virtio_net: do not reschedule rx refill forever
    
    We currently fill all of RX ring, then add_buf
    returns ENOSPC, which gets mis-detected as an out of
    memory condition and causes us to reschedule the work,
    and so on forever. Fix this by oom = err == -ENOMEM;
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Cc: stable@kernel.org # .34.x
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 drivers/net/virtio_net.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 1edb7a6..ee75711 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -415,7 +415,7 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, gfp_t gfp)
 static bool try_fill_recv(struct virtnet_info *vi, gfp_t gfp)
 {
 	int err;
-	bool oom = false;
+	bool oom;
 
 	do {
 		if (vi->mergeable_rx_bufs)
@@ -425,10 +425,9 @@ static bool try_fill_recv(struct virtnet_info *vi, gfp_t gfp)
 		else
 			err = add_recvbuf_small(vi, gfp);
 
-		if (err < 0) {
-			oom = true;
+		oom = err == -ENOMEM;
+		if (err < 0)
 			break;
-		}
 		++vi->num;
 	} while (err > 0);
 	if (unlikely(vi->num > vi->max))
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
virtio_net: do not reschedule rx refill forever, Linux Kernel Mailing ..., (Wed Jul 7, 7:59 pm)