Message ID | 20230829054623.104293-3-alexhenrie24@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ipv6/addrconf: ensure that temporary addresses' preferred lifetimes are in the valid range | expand |
On Mon, 2023-08-28 at 23:44 -0600, Alex Henrie wrote: > Without this patch, there is nothing to stop the preferred lifetime of a > temporary address from being greater than its valid lifetime. If that > was the case, the valid lifetime was effectively ignored. AFAICS this change makes the ipv6 implementation more in compliance with the RFC, but on the flip side it will also break existing users (if any) which set preferred > valid as a way to get an unlimited validity period. I'm quite unsure if the above is really the best option, but I think it should not threaded as a fix. My suggestion would be to re-send the uncontroversial patch 1/5 as a stand-alone fix, and the following patches as a series targeting net- next (no fixes tag there). Cheers, Paolo
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index c93a2b9a9172..561c6266040a 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1387,6 +1387,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, bool block) idev->cnf.temp_valid_lft + age); cfg.preferred_lft = cnf_temp_preferred_lft + age - idev->desync_factor; cfg.preferred_lft = min_t(__u32, ifp->prefered_lft, cfg.preferred_lft); + cfg.preferred_lft = min_t(__u32, cfg.valid_lft, cfg.preferred_lft); cfg.plen = ifp->prefix_len; tmp_tstamp = ifp->tstamp;
Without this patch, there is nothing to stop the preferred lifetime of a temporary address from being greater than its valid lifetime. If that was the case, the valid lifetime was effectively ignored. Fixes: 76506a986dc3 (IPv6: fix DESYNC_FACTOR, 2016-10-13) Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> --- net/ipv6/addrconf.c | 1 + 1 file changed, 1 insertion(+)