mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 21:02:43 +01:00
ipv6: fix prefix route expiry in modify_prefix_route()
modify_prefix_route() is given the lifetime in clock_t relative to now,
but fib6_set_expires() wants an absolute jiffies value. So when a
permanent address is changed to a finite valid_lft, the prefix route
ends up already expired and GC removes it.
Steps to reproduce:
ip link add dummy9 type dummy
ip link set dummy9 up
ip -6 addr add 2001:db8:9::1/64 dev dummy9
ip -6 addr change 2001:db8:9::1/64 dev dummy9 valid_lft 3600 preferred_lft 3600
ip -6 route show dev dummy9 # expires is negative
Fixes: 8308f3ff17 ("net/ipv6: Add support for specifying metric of connected routes")
Signed-off-by: Qishuai Liu <[email protected]>
Reviewed-by: Hangbin Liu <[email protected]>
Reviewed-by: Ido Schimmel <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
This commit is contained in:
1 parent
0e7fe2b0ca
commit
a7bfaba482
1 file changed
+1
-1
+1
-1
@@ -4874,7 +4874,7 @@ static int modify_prefix_route(struct net *net, struct inet6_ifaddr *ifp,
|
||||
fib6_clean_expires(f6i);
|
||||
fib6_may_remove_gc_list(net, f6i);
|
||||
} else {
|
||||
fib6_set_expires(f6i, expires);
|
||||
fib6_set_expires(f6i, jiffies + clock_t_to_jiffies(expires));
|
||||
fib6_add_gc_list(f6i);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user