Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp871478pxb; Tue, 1 Feb 2022 12:08:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJytREnxhLXuL29otd/bwA6cukgYAFbqldH2BOGddNAmL2+b2tB9VxwSkFzqLJNFt5Naemq6 X-Received: by 2002:a63:86c8:: with SMTP id x191mr21847557pgd.240.1643746127351; Tue, 01 Feb 2022 12:08:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643746127; cv=none; d=google.com; s=arc-20160816; b=jWiJyWz9bmpDuUsFxer6t/B0p4fFZORiim5ZuStpjz+s4FnPV0X+YbBjrLRYhBOE1I HOyIMoK4U6IyHPb3RWo9w0arj4zo71o7cdHPWQ70Dsg+XRrYqA0imlEbGUhRbB39i3Ja c36ZMf4RndxzW8neyDAla1ihCPofxiTEcnO+rVo4mpoPITPAqbPMjkM1oI3vgFaGDago 0VgI1IAH9pO9hfjbGJjMRsKlGWxUW7uBQUihhc20rlS01CUc87cMccBRptsDC3JYINAl LLc5JmLhp3K85RDwR6VTTakzlZxbvMEfvQrJMmsFmH3QTSOTCXOITXXsKhKVKrseCIlF YjMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=AwCFLCAqvRyCS32fF3Qy8FU5K1nZn++I+er7HwmFRSg=; b=C5ucKmcWtA0puQwNoYerfRR2TUYMkAXNZCEHwlEBpwajxqgmeRd8twxfNDJvm055GF pw9WjCZQg+YhBnric0yyO0003KkOdYmuPtTz9lLSsrp2ORXn/0ZzpkKL44/TnJ7U/Jcn h9B9sQkbbRdtMcppRAriR1VopW5JW6RhCOWIZAdK0+vHD7573x45itgZtiqtfzXJ3Kb5 IpN8oeBb0QztkYg50Rln2ePsDBGiWw8D5qQ9kreG2s0KTv0qrtxWDQPJnQeFH7ixUDuU PSJx2MgB5SNyImrmdt7LNVVqbcXNQSz2msiNua9zCDNN8kWlRxAt+4Wfr8hUXxFLiW/t ztDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Sz9fR1IQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h14si18511423pfc.358.2022.02.01.12.08.35; Tue, 01 Feb 2022 12:08:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Sz9fR1IQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378402AbiAaLbL (ORCPT + 99 others); Mon, 31 Jan 2022 06:31:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376598AbiAaLVu (ORCPT ); Mon, 31 Jan 2022 06:21:50 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD6FAC0797B8; Mon, 31 Jan 2022 03:14:18 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8681E611D8; Mon, 31 Jan 2022 11:14:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F3C4C340E8; Mon, 31 Jan 2022 11:14:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643627658; bh=zswzNO2HKzY+6xdUru5NZf7GVc9OVOevY31Jj/qwN88=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Sz9fR1IQjzxOxV77c2yPAnw0h4k4dDuhZRf+BuW4qkq/7rGQ86y3Ftnv/JxcaJNu9 OMK3kojJOB684HZtV36bu63PY6YwBwPX7VpKFgu6/FBpVkXCk4CNayRc/4inKZt3kx lvkBJbmbKkB2He4YfBFv+2MdtdowWEvJ02twW7Vc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Guillaume Nault , "David S. Miller" , Sasha Levin Subject: [PATCH 5.15 155/171] Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" Date: Mon, 31 Jan 2022 11:57:00 +0100 Message-Id: <20220131105235.267308908@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220131105229.959216821@linuxfoundation.org> References: <20220131105229.959216821@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Guillaume Nault [ Upstream commit 36268983e90316b37000a005642af42234dabb36 ] This reverts commit b75326c201242de9495ff98e5d5cff41d7fc0d9d. This commit breaks Linux compatibility with USGv6 tests. The RFC this commit was based on is actually an expired draft: no published RFC currently allows the new behaviour it introduced. Without full IETF endorsement, the flash renumbering scenario this patch was supposed to enable is never going to work, as other IPv6 equipements on the same LAN will keep the 2 hours limit. Fixes: b75326c20124 ("ipv6: Honor all IPv6 PIO Valid Lifetime values") Signed-off-by: Guillaume Nault Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- include/net/addrconf.h | 2 ++ net/ipv6/addrconf.c | 27 ++++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 78ea3e332688f..e7ce719838b5e 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -6,6 +6,8 @@ #define RTR_SOLICITATION_INTERVAL (4*HZ) #define RTR_SOLICITATION_MAX_INTERVAL (3600*HZ) /* 1 hour */ +#define MIN_VALID_LIFETIME (2*3600) /* 2 hours */ + #define TEMP_VALID_LIFETIME (7*86400) #define TEMP_PREFERRED_LIFETIME (86400) #define REGEN_MAX_RETRY (3) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 846037e73723f..bf13865426340 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2587,7 +2587,7 @@ int addrconf_prefix_rcv_add_addr(struct net *net, struct net_device *dev, __u32 valid_lft, u32 prefered_lft) { struct inet6_ifaddr *ifp = ipv6_get_ifaddr(net, addr, dev, 1); - int create = 0; + int create = 0, update_lft = 0; if (!ifp && valid_lft) { int max_addresses = in6_dev->cnf.max_addresses; @@ -2631,19 +2631,32 @@ int addrconf_prefix_rcv_add_addr(struct net *net, struct net_device *dev, unsigned long now; u32 stored_lft; - /* Update lifetime (RFC4862 5.5.3 e) - * We deviate from RFC4862 by honoring all Valid Lifetimes to - * improve the reaction of SLAAC to renumbering events - * (draft-gont-6man-slaac-renum-06, Section 4.2) - */ + /* update lifetime (RFC2462 5.5.3 e) */ spin_lock_bh(&ifp->lock); now = jiffies; if (ifp->valid_lft > (now - ifp->tstamp) / HZ) stored_lft = ifp->valid_lft - (now - ifp->tstamp) / HZ; else stored_lft = 0; - if (!create && stored_lft) { + const u32 minimum_lft = min_t(u32, + stored_lft, MIN_VALID_LIFETIME); + valid_lft = max(valid_lft, minimum_lft); + + /* RFC4862 Section 5.5.3e: + * "Note that the preferred lifetime of the + * corresponding address is always reset to + * the Preferred Lifetime in the received + * Prefix Information option, regardless of + * whether the valid lifetime is also reset or + * ignored." + * + * So we should always update prefered_lft here. + */ + update_lft = 1; + } + + if (update_lft) { ifp->valid_lft = valid_lft; ifp->prefered_lft = prefered_lft; ifp->tstamp = now; -- 2.34.1