diff options
| author | Herbert Xu <herbert@gondor.apana.org.au> | 2004-09-22 23:17:16 -0700 |
|---|---|---|
| committer | David S. Miller <davem@kernel.bkbits.net> | 2004-09-22 23:17:16 -0700 |
| commit | 6874d725c31099662b52df53e41a80c30d138fc0 (patch) | |
| tree | 655bbb963e8cbae1e34203375151290bc387ff26 | |
| parent | 6d3c52b4073f7c87bb22bba0a1931f191d04c20e (diff) | |
[IPV4]: Fix endless loop in fn_hash_delete.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | net/ipv4/fib_hash.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c index 7a7a5c819bcf..ea2d7c675e42 100644 --- a/net/ipv4/fib_hash.c +++ b/net/ipv4/fib_hash.c @@ -609,6 +609,7 @@ fn_hash_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, struct fn_hash *table = (struct fn_hash*)tb->tb_data; struct fib_node *f; struct fib_alias *fa, *fa_to_delete; + struct list_head *fa_head; int z = r->rtm_dst_len; struct fn_zone *fz; u32 key; @@ -634,7 +635,8 @@ fn_hash_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, return -ESRCH; fa_to_delete = NULL; - list_for_each_entry(fa, fa->fa_list.prev, fa_list) { + fa_head = fa->fa_list.prev; + list_for_each_entry(fa, fa_head, fa_list) { struct fib_info *fi = fa->fa_info; if ((!r->rtm_type || |
