From: alexander.levin@verizon.com
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Cc: Xin Long <lucien.xin@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
alexander.levin@verizon.com
Subject: [PATCH AUTOSEL for 4.4 04/20] route: update fnhe_expires for redirect when the fnhe exists
Date: Sat, 2 Dec 2017 15:52:53 +0000 [thread overview]
Message-ID: <20171202155243.7774-4-alexander.levin@verizon.com> (raw)
In-Reply-To: <20171202155243.7774-1-alexander.levin@verizon.com>
From: Xin Long <lucien.xin@gmail.com>
[ Upstream commit e39d5246111399dbc6e11cd39fd8580191b86c47 ]
Now when creating fnhe for redirect, it sets fnhe_expires for this
new route cache. But when updating the exist one, it doesn't do it.
It will cause this fnhe never to be expired.
Paolo already noticed it before, in Jianlin's test case, it became
even worse:
When ip route flush cache, the old fnhe is not to be removed, but
only clean it's members. When redirect comes again, this fnhe will
be found and updated, but never be expired due to fnhe_expires not
being set.
So fix it by simply updating fnhe_expires even it's for redirect.
Fixes: aee06da6726d ("ipv4: use seqlock for nh_exceptions")
Reported-by: Jianlin Shi <jishi@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
net/ipv4/route.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index a6d9369864f5..52d718e3f077 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -656,10 +656,9 @@ static void update_or_create_fnhe(struct fib_nh *nh, __be32 daddr, __be32 gw,
fnhe->fnhe_genid = genid;
if (gw)
fnhe->fnhe_gw = gw;
- if (pmtu) {
+ if (pmtu)
fnhe->fnhe_pmtu = pmtu;
- fnhe->fnhe_expires = max(1UL, expires);
- }
+ fnhe->fnhe_expires = max(1UL, expires);
/* Update all cached dsts too */
rt = rcu_dereference(fnhe->fnhe_rth_input);
if (rt)
--
2.11.0
next prev parent reply other threads:[~2017-12-02 15:53 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-02 15:52 [PATCH AUTOSEL for 4.4 01/20] kbuild: pkg: use --transform option to prefix paths in tar alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 02/20] mac80211_hwsim: Fix memory leak in hwsim_new_radio_nl() alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 03/20] route: also update fnhe_genid when updating a route cache alexander.levin
2017-12-02 15:52 ` alexander.levin [this message]
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 05/20] lib/genalloc.c: make the avail variable an atomic_long_t alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 06/20] dynamic-debug-howto: fix optional/omitted ending line number to be LARGE instead of 0 alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 08/20] sunrpc: Fix rpc_task_begin trace point alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 07/20] NFS: Fix a typo in nfs_rename() alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 09/20] block: wake up all tasks blocked in get_request() alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 10/20] sparc64/mm: set fields in deferred pages alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 11/20] sctp: do not free asoc when it is already dead in sctp_sendmsg alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 12/20] sctp: use the right sk after waking up from wait_buf sleep alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 15/20] xfrm: Copy policy family in clone_policy alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 14/20] jump_label: Invoke jump_label_test() via early_initcall() alexander.levin
2017-12-02 15:52 ` [PATCH AUTOSEL for 4.4 13/20] atm: horizon: Fix irq release error alexander.levin
2017-12-02 15:53 ` [PATCH AUTOSEL for 4.4 16/20] IB/mlx4: Increase maximal message size under UD QP alexander.levin
2017-12-02 15:53 ` [PATCH AUTOSEL for 4.4 18/20] afs: Connect up the CB.ProbeUuid alexander.levin
2017-12-02 15:53 ` [PATCH AUTOSEL for 4.4 19/20] ipvlan: fix ipv6 outbound device alexander.levin
2017-12-02 15:53 ` [PATCH AUTOSEL for 4.4 17/20] IB/mlx5: Assign send CQ and recv CQ of UMR QP alexander.levin
2017-12-02 15:53 ` [PATCH AUTOSEL for 4.4 20/20] audit: ensure that 'audit=1' actually enables audit for PID 1 alexander.levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171202155243.7774-4-alexander.levin@verizon.com \
--to=alexander.levin@verizon.com \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lucien.xin@gmail.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®