Skip to content

Commit

Permalink
fib_rules: Fix dump_rules() not to exit early
Browse files Browse the repository at this point in the history
[ Upstream commit 8ea4b34 ]

Backports of 41fc014 ("fib_rules: fix fib rule dumps across
multiple skbs") introduced a regression in "ip rule show" - it ends up
dumping the first rule over and over and never exiting, because 3.19
and earlier are missing commit 053c095 ("netlink: make
nlmsg_end() and genlmsg_end() void"), so fib_nl_fill_rule() ends up
returning skb->len (i.e. > 0) in the success case.

Fix this by checking the return code for < 0 instead of != 0.

Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
  • Loading branch information
Roland Dreier authored and Sasha Levin committed Oct 28, 2015
1 parent 7f61fd9 commit cb4b2ae
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion net/core/fib_rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,7 @@ static int dump_rules(struct sk_buff *skb, struct netlink_callback *cb,
err = fib_nl_fill_rule(skb, rule, NETLINK_CB(cb->skb).portid,
cb->nlh->nlmsg_seq, RTM_NEWRULE,
NLM_F_MULTI, ops);
if (err)
if (err < 0)
break;
skip:
idx++;
Expand Down

0 comments on commit cb4b2ae

Please sign in to comment.