From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v1] net: ipv6: fix racey clock check in route cache aging logic Date: Thu, 25 Oct 2018 14:13:52 -0700 Message-ID: <20181025211352.112096-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Brendan Higgins To: davem@davemloft.net, kuznet@ms2.inr.ac.ru, yoshfuji@linux-ipv6.org Return-path: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Fix a bug where, with certain settings, the aging logic does not use the time passed in as the current time, but instead directly checks jiffies. This bug can be reproduced with (and this fix verified with) the test at: https://kunit-review.googlesource.com/c/linux/+/1156 Fixes: 31afeb425f7f ("ipv6: change route cache aging logic") Discovered-by-KUnit: https://kunit-review.googlesource.com/c/linux/+/1156 Signed-off-by: Brendan Higgins --- net/ipv6/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 2a7423c394560..54d28b91fd840 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1734,7 +1734,7 @@ static void rt6_age_examine_exception(struct rt6_exception_bucket *bucket, rt6_remove_exception(bucket, rt6_ex); return; } - } else if (time_after(jiffies, rt->dst.expires)) { + } else if (time_after(now, rt->dst.expires)) { RT6_TRACE("purging expired route %p\n", rt); rt6_remove_exception(bucket, rt6_ex); return; -- 2.19.1.568.g152ad8e336-goog