From c8442032215a2e7269109e89c2689d1461124175 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Mon, 7 Jan 2008 21:52:14 -0800 Subject: [PATCH] --- yaml --- r: 75339 b: refs/heads/master c: d8c9283089287341c85a0a69de32c2287a990e71 h: refs/heads/master i: 75337: 8c61521c3c765368eb51bdb99add5371227db958 75335: 3c10cfc95b2765c21cf2d8f8d86e7ff39025baae v: v3 --- [refs] | 2 +- trunk/net/ipv4/route.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 4add2a96a17b..049a037db7e5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b2b2e35b71e5be8bc06cc0ff38df15dfedda19b +refs/heads/master: d8c9283089287341c85a0a69de32c2287a990e71 diff --git a/trunk/net/ipv4/route.c b/trunk/net/ipv4/route.c index d2bc6148a737..d3377069ce05 100644 --- a/trunk/net/ipv4/route.c +++ b/trunk/net/ipv4/route.c @@ -2626,11 +2626,10 @@ int ip_rt_dump(struct sk_buff *skb, struct netlink_callback *cb) int idx, s_idx; s_h = cb->args[0]; + if (s_h < 0) + s_h = 0; s_idx = idx = cb->args[1]; - for (h = 0; h <= rt_hash_mask; h++) { - if (h < s_h) continue; - if (h > s_h) - s_idx = 0; + for (h = s_h; h <= rt_hash_mask; h++) { rcu_read_lock_bh(); for (rt = rcu_dereference(rt_hash_table[h].chain), idx = 0; rt; rt = rcu_dereference(rt->u.dst.rt_next), idx++) { @@ -2647,6 +2646,7 @@ int ip_rt_dump(struct sk_buff *skb, struct netlink_callback *cb) dst_release(xchg(&skb->dst, NULL)); } rcu_read_unlock_bh(); + s_idx = 0; } done: