Re: [PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
On Mon, Oct 05, 2015 at 10:29:28AM -0700, Roland Dreier wrote: > From: Roland Dreier> > Backports of 41fc014332d9 ("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 053c095a82cf ("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 > --- > Hi, this is needed for all stable trees earlier than 4.0 that have > picked up 41fc014332d9; so far looks like at least 3.10.y and 3.14.y > have made such releases. > Thanks Roland, I'm queuing this fix for the 3.16 kernel as well. Cheers, -- Luís > net/core/fib_rules.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c > index 627e517077e4..84340a2605ed 100644 > --- a/net/core/fib_rules.c > +++ b/net/core/fib_rules.c > @@ -606,7 +606,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++; > -- > 2.5.0 > > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
On Mon, Oct 05, 2015 at 10:29:28AM -0700, Roland Dreier wrote: > From: Roland Dreier> > Backports of 41fc014332d9 ("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 053c095a82cf ("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 > --- > Hi, this is needed for all stable trees earlier than 4.0 that have > picked up 41fc014332d9; so far looks like at least 3.10.y and 3.14.y > have made such releases. Thanks for this, now applied to 3.10 and 3.14-stable trees. greg k-h -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
Hi Roland, On Monday, 5. October 2015 10:29:28 Roland Dreier wrote: > From: Roland Dreier> > Backports of 41fc014332d9 ("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 053c095a82cf ("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. thanks for this fix. You just saved me an afternoon of bisecting :) I can confirm that this fixes the mentioned issue introduced in 3.14.54. We have an automated ipsec VPN test that failed after the upgrade: The "ip rule list" command was hanging forever. Cheers, Thomas -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
On Mon, 2015-10-05 at 10:29 -0700, Roland Dreier wrote: > From: Roland Dreier> > Backports of 41fc014332d9 ("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 053c095a82cf ("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 > --- > Hi, this is needed for all stable trees earlier than 4.0 that have > picked up 41fc014332d9; so far looks like at least 3.10.y and 3.14.y > have made such releases. [...] Thanks, I'm folding this into the backported patch in 3.2. Ben. -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse. signature.asc Description: This is a digitally signed message part
[PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
From: Roland DreierBackports of 41fc014332d9 ("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 053c095a82cf ("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 --- Hi, this is needed for all stable trees earlier than 4.0 that have picked up 41fc014332d9; so far looks like at least 3.10.y and 3.14.y have made such releases. net/core/fib_rules.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index 627e517077e4..84340a2605ed 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c @@ -606,7 +606,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++; -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 3.19 and earlier] fib_rules: Fix dump_rules() not to exit early
On 10/05/2015, 07:29 PM, Roland Dreier wrote: > From: Roland Dreier> > Backports of 41fc014332d9 ("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 053c095a82cf ("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 > --- > Hi, this is needed for all stable trees earlier than 4.0 that have > picked up 41fc014332d9; so far looks like at least 3.10.y and 3.14.y > have made such releases. > > net/core/fib_rules.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c > index 627e517077e4..84340a2605ed 100644 > --- a/net/core/fib_rules.c > +++ b/net/core/fib_rules.c > @@ -606,7 +606,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) I integrated the fix into the backport of 41fc014332d9 in 3.12 and made a note in there. Thanks! -- js suse labs -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html