[NET]: Fix IPv4/DECnet routing rule dumping
When more rules are present than fit in a single skb, the remaining rules are incorrectly skipped. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a430a43d08
commit
26e0fd1ce2
2 changed files with 4 additions and 3 deletions
|
@ -399,9 +399,10 @@ int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
hlist_for_each_entry(r, node, &dn_fib_rules, r_hlist) {
|
hlist_for_each_entry(r, node, &dn_fib_rules, r_hlist) {
|
||||||
if (idx < s_idx)
|
if (idx < s_idx)
|
||||||
continue;
|
goto next;
|
||||||
if (dn_fib_fill_rule(skb, r, cb, NLM_F_MULTI) < 0)
|
if (dn_fib_fill_rule(skb, r, cb, NLM_F_MULTI) < 0)
|
||||||
break;
|
break;
|
||||||
|
next:
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
|
@ -457,13 +457,13 @@ int inet_dump_rules(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
hlist_for_each_entry(r, node, &fib_rules, hlist) {
|
hlist_for_each_entry(r, node, &fib_rules, hlist) {
|
||||||
|
|
||||||
if (idx < s_idx)
|
if (idx < s_idx)
|
||||||
continue;
|
goto next;
|
||||||
if (inet_fill_rule(skb, r, NETLINK_CB(cb->skb).pid,
|
if (inet_fill_rule(skb, r, NETLINK_CB(cb->skb).pid,
|
||||||
cb->nlh->nlmsg_seq,
|
cb->nlh->nlmsg_seq,
|
||||||
RTM_NEWRULE, NLM_F_MULTI) < 0)
|
RTM_NEWRULE, NLM_F_MULTI) < 0)
|
||||||
break;
|
break;
|
||||||
|
next:
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
Loading…
Reference in a new issue