[IPV6]: Fix rtnetlink dump infinite loop
authorHerbert Xu <herbert@gondor.apana.org.au>
Sat, 12 Nov 2005 20:12:05 +0000 (12:12 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Nov 2005 20:12:05 +0000 (12:12 -0800)
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>
net/ipv6/route.c

index f7f42c3e96cb537f5cd885610d00972916e6e591..a7a537b5059537bb7d7fd5291323277333c22cb7 100644 (file)
@@ -1701,10 +1701,8 @@ static void fib6_dump_end(struct netlink_callback *cb)
                fib6_walker_unlink(w);
                kfree(w);
        }
-       if (cb->args[1]) {
-               cb->done = (void*)cb->args[1];
-               cb->args[1] = 0;
-       }
+       cb->done = (void*)cb->args[1];
+       cb->args[1] = 0;
 }
 
 static int fib6_dump_done(struct netlink_callback *cb)