Commit 1e8cd841 authored by Patrick McHardy's avatar Patrick McHardy Committed by Greg Kroah-Hartman

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: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1dff316b
...@@ -400,9 +400,10 @@ int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb) ...@@ -400,9 +400,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();
......
...@@ -458,13 +458,13 @@ int inet_dump_rules(struct sk_buff *skb, struct netlink_callback *cb) ...@@ -458,13 +458,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();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment