On Mon, May 20, 2019 at 11:04:29AM +0200, Greg Kroah-Hartman wrote:
On Sun, May 19, 2019 at 06:29:19PM -0600, David Ahern wrote:
On 5/19/19 9:43 AM, Nathan Chancellor wrote:
Hi all,
This commit is causing issues on Android devices when Wi-Fi and mobile data are both enabled. The device will do a soft reboot consistently. So far, I've had reports on the Pixel 3 XL, OnePlus 6, Pocophone, and Note 9 and I can reproduce on my OnePlus 6.
Sorry for taking so long to report this, I just figured out how to reproduce it today and I didn't want to report it without that.
Attached is a full dmesg and the relevant snippet from Android's logcat.
Let me know what I can do to help debug, Nathan
It's a backport problem. err needs to be reset to 0 before the goto.
Ah, I see it, let me go queue up a fix for this.
Here's the fix I'm queueing up now:
From b42f0ebbe4431ff7ce99c916555418f4a4c2be67 Mon Sep 17 00:00:00 2001
From: Greg Kroah-Hartman gregkh@linuxfoundation.org Date: Mon, 20 May 2019 11:07:29 +0200 Subject: [PATCH] fib_rules: fix error in backport of e9919a24d302 ("fib_rules: return 0...")
When commit e9919a24d302 ("fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied") was backported to 4.9.y, it changed the logic a bit as err should have been reset before exiting the test, like it happens in the original logic.
If this is not set, errors happen :(
Reported-by: Nathan Chancellor natechancellor@gmail.com Reported-by: David Ahern dsahern@gmail.com Reported-by: Florian Westphal fw@strlen.de Cc: Hangbin Liu liuhangbin@gmail.com Cc: David S. Miller davem@davemloft.net Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- net/core/fib_rules.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index bb26457e8c21..c03dd2104d33 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c @@ -430,6 +430,7 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh) goto errout_free;
if (rule_exists(ops, frh, tb, rule)) { + err = 0; if (nlh->nlmsg_flags & NLM_F_EXCL) err = -EEXIST; goto errout_free;