Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp853409pja; Wed, 1 Apr 2020 09:52:42 -0700 (PDT) X-Google-Smtp-Source: APiQypIHUMJWWhMXsIIRp2uMpoer3ErFLUaNGOa7eEfF6ldn76/qwIjSOybP3Ny1v6fwarlfuTA+ X-Received: by 2002:aca:f449:: with SMTP id s70mr3393500oih.86.1585759961843; Wed, 01 Apr 2020 09:52:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585759961; cv=none; d=google.com; s=arc-20160816; b=FJ2NVbYSRn3J7ePAYsltVdwrSi3jXhI66lDPWdbiPWlvlfJNcEi46H4TjkWEPTpXNz iWXr94HG/5SXEWKVQN7cCm0zQSHP92jj49r0uyqzHk1fW+VC2xvOJFPQcIdNa/5FOPRY ftGu/0lybuigpazc7zMDVnhHW4SWH6EmudRs8yKnFnHcZX8vGFka1v47PgZsTVVzoRhi 1YXlbgweNKKuBZ2Yj3d1mfbWeYoXJCblAqWBiQXgIoNFXm4r8akGiwJ70OdeHYty/T4q cUYRY4HKUNQdGE2bSlzY+UbQ9pTiyC3pi2E7mV7dz3+cVHYqP2LaegWlAteCPNGdLP1U q/8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4zWsD9Sk3uVbW3a8w2T0gfRdxjLdrltAU3H75sjVsT4=; b=cq0F3hx9rqXp6HL4d99BXqdhqwZCrml8AUq6A1Bxm7oVGd1WOle0QBn+bXKr7gbspI Bz4uf/oJ7ihPZXk26EAJGlkXejC+tP6hXg2d52onxtM1hzuEC7OozKME7DfHityvstCN U6C74VX0x/7zWOO/0J4FXcuwmuVGMato4qj+77ZqjeuDM6xx40Ll2SWIZ/mZ5gQiqlZM q/T1w62p+KKAJaTX2S+5d2D36omhwXUX4EQ16x9SEV3KhFPYlmGRYTxT0Xtl6NyajPFJ jakQBEDWFTNZ1CfTOwoq1t5VjS28MBJpeP7qShE/CGZQo0Piakl+0g/7fsG+Pm5sAJtd B/tw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=tgWApvuT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d145si1102085oig.261.2020.04.01.09.52.28; Wed, 01 Apr 2020 09:52:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=tgWApvuT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388793AbgDAQhF (ORCPT + 99 others); Wed, 1 Apr 2020 12:37:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:36104 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388909AbgDAQg7 (ORCPT ); Wed, 1 Apr 2020 12:36:59 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B719C20857; Wed, 1 Apr 2020 16:36:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585759019; bh=ohqJLmyECEmNlowxB0+bY4WZAdYt+06EO59CPW/sGCo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tgWApvuTM7faNIeOiLepUeKCLMnIrqi76Oq0GvijGXUWYoIyWL6R8N+yw4E3jlXuh A5KX0ay90nZI7iecRFef9ODlI3B3Pxd9tFv3uq+MIGp5AredU2/pOxl+RveG3bdupV sEdMjX58A8rVqN+aooO6/vOQ26B+6Q2Wo82HPqC4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sabrina Dubroca , Stefano Brivio , "David S. Miller" , Sasha Levin Subject: [PATCH 4.9 051/102] net: ipv4: dont let PMTU updates increase route MTU Date: Wed, 1 Apr 2020 18:17:54 +0200 Message-Id: <20200401161542.614838063@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200401161530.451355388@linuxfoundation.org> References: <20200401161530.451355388@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sabrina Dubroca [ Upstream commit 28d35bcdd3925e7293408cdb8aa5f2aac5f0d6e3 ] When an MTU update with PMTU smaller than net.ipv4.route.min_pmtu is received, we must clamp its value. However, we can receive a PMTU exception with PMTU < old_mtu < ip_rt_min_pmtu, which would lead to an increase in PMTU. To fix this, take the smallest of the old MTU and ip_rt_min_pmtu. Before this patch, in case of an update, the exception's MTU would always change. Now, an exception can have only its lock flag updated, but not the MTU, so we need to add a check on locking to the following "is this exception getting updated, or close to expiring?" test. Fixes: d52e5a7e7ca4 ("ipv4: lock mtu in fnhe when received PMTU < net.ipv4.route.min_pmtu") Signed-off-by: Sabrina Dubroca Reviewed-by: Stefano Brivio Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/ipv4/route.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 6058dbc4e2c19..8f5c6fa54ac09 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -991,21 +991,22 @@ out: kfree_skb(skb); static void __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu) { struct dst_entry *dst = &rt->dst; + u32 old_mtu = ipv4_mtu(dst); struct fib_result res; bool lock = false; if (ip_mtu_locked(dst)) return; - if (ipv4_mtu(dst) < mtu) + if (old_mtu < mtu) return; if (mtu < ip_rt_min_pmtu) { lock = true; - mtu = ip_rt_min_pmtu; + mtu = min(old_mtu, ip_rt_min_pmtu); } - if (rt->rt_pmtu == mtu && + if (rt->rt_pmtu == mtu && !lock && time_before(jiffies, dst->expires - ip_rt_mtu_expires / 2)) return; -- 2.20.1