aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2005-11-12 15:12:05 -0500
committerDavid S. Miller <davem@davemloft.net>2005-11-12 15:12:05 -0500
commitefacfbcb6c88677809f44a574fbcd9824835dccb (patch)
tree6fea7fcaf7c979a0be6c370c3bb99736753e4ada
parent4f005551a8fac21b6fec8d10d57cd12d373d79e1 (diff)
[IPV6]: Fix rtnetlink dump infinite loop
The recent change to netlink dump "done" callback handling broke IPv6 which played dirty tricks with the "done" callback. This causes an infinite loop during a dump. The following patch fixes it. This bug was reported by Jeff Garzik. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv6/route.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index f7f42c3e96cb..a7a537b50595 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1701,10 +1701,8 @@ static void fib6_dump_end(struct netlink_callback *cb)
1701 fib6_walker_unlink(w); 1701 fib6_walker_unlink(w);
1702 kfree(w); 1702 kfree(w);
1703 } 1703 }
1704 if (cb->args[1]) { 1704 cb->done = (void*)cb->args[1];
1705 cb->done = (void*)cb->args[1]; 1705 cb->args[1] = 0;
1706 cb->args[1] = 0;
1707 }
1708} 1706}
1709 1707
1710static int fib6_dump_done(struct netlink_callback *cb) 1708static int fib6_dump_done(struct netlink_callback *cb)