Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp5446165imm; Tue, 16 Oct 2018 10:20:18 -0700 (PDT) X-Google-Smtp-Source: ACcGV60iw4VRgGWY65sO1MJfiQTAF7r3JboNCcVqJQ8gqk1hwv3aEL1HpayPfWa0+YLgX4kCE0Zu X-Received: by 2002:a63:27c1:: with SMTP id n184-v6mr21008771pgn.334.1539710418537; Tue, 16 Oct 2018 10:20:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539710418; cv=none; d=google.com; s=arc-20160816; b=aIy8PJ9ywkCiOrbMfX471pXlIbiDdfoL1CB1b1pO48swcpPOy2qZy40ephfaB4QEr1 rc94gQXV5cEBGFhrC+muXG533cHcD8Psbuaqs31gwnU88C9YFUqkt7RyfcxHfI8VWoya fAZpS8Pvugc1Ez+9YLdXu9a7tv8mYb05R4SJ4D2NizrMzHbkleBLHqMZwey22wmAExqc S7/iQYjIv2tixeq8a/u6pxxoRE4DfKP/blujI3oGd3BypfWutcn4oeqsKhELBBrkEVmJ sB0o+v3vTlsTqqzy1ghwJ0HxgnrFkC/bPwMArmht47IS4JLLKnmvUOJm9Jl5DRhf7hCb 8Upg== 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=DA+EPvc1kdQXVvCeiBiEIbimjODD/F7KdKlBor0+1yE=; b=QvOAjJaofXP1dFtizHdWgG8OTPOu4/tBQl2XSrQEmazqkvb0E3h11K769ROJwge8nJ hgpRhRtAPXVYxNawEGOfErfpW8VEwrKRDLymhVEnSQpSLaSm7iXJX2WtfC9ob/us+dJH vOpQUDfK7Dj5wO142JnBBGWQaf0KO1Bsu/YkRIDikF36DQP3rVUo6gvmnlAve6j9+dJ3 V62TUMw7DKERHEIje/vWvTAT0eUQGmTpCV7mquL2d+SHgzHIKrTCV6RMt19IQJKkWu1r /2cmYqfJ+DATtShrzqVTAav8rARkxU/6udcsUCb18awiiUFE0PRaP1RDFDystr18jnXG kVAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=KVTETHnu; 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 h32-v6si14423935pgm.126.2018.10.16.10.20.02; Tue, 16 Oct 2018 10:20:18 -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=KVTETHnu; 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 S1729998AbeJQBJN (ORCPT + 99 others); Tue, 16 Oct 2018 21:09:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:54002 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728441AbeJQBJM (ORCPT ); Tue, 16 Oct 2018 21:09:12 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 1C23A2098A; Tue, 16 Oct 2018 17:17:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539710268; bh=85H2dJrllWFOGUxQsFKkr6J/sO+3bWQP1ViI+aa2drM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KVTETHnuGkPkuIMUQ7NzIzSGdPwsohCFw1kS5cLpjKgn8jD6Iz8Rcgkofqpgq6Qql WePZsbxbVtCBEv4UqIHNNBJ9hAF5V6/zV+Q9jlaKs5jdV7Y2jkJEGRQD9JBS1Thrde 7b9E1xr1cdLvadus8RZBof4LdHnAZGjOTihY/gME= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, ian.periam@dialogic.com, Xin Long , Marcelo Ricardo Leitner , "David S. Miller" Subject: [PATCH 4.14 022/109] sctp: update dst pmtu with the correct daddr Date: Tue, 16 Oct 2018 19:04:50 +0200 Message-Id: <20181016170526.301320442@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181016170524.530541524@linuxfoundation.org> References: <20181016170524.530541524@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Xin Long [ Upstream commit d7ab5cdce54da631f0c8c11e506c974536a3581e ] When processing pmtu update from an icmp packet, it calls .update_pmtu with sk instead of skb in sctp_transport_update_pmtu. However for sctp, the daddr in the transport might be different from inet_sock->inet_daddr or sk->sk_v6_daddr, which is used to update or create the route cache. The incorrect daddr will cause a different route cache created for the path. So before calling .update_pmtu, inet_sock->inet_daddr/sk->sk_v6_daddr should be updated with the daddr in the transport, and update it back after it's done. The issue has existed since route exceptions introduction. Fixes: 4895c771c7f0 ("ipv4: Add FIB nexthop exceptions.") Reported-by: ian.periam@dialogic.com Signed-off-by: Xin Long Acked-by: Marcelo Ricardo Leitner Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/sctp/transport.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -254,6 +254,7 @@ void sctp_transport_pmtu(struct sctp_tra bool sctp_transport_update_pmtu(struct sctp_transport *t, u32 pmtu) { struct dst_entry *dst = sctp_transport_dst_check(t); + struct sock *sk = t->asoc->base.sk; bool change = true; if (unlikely(pmtu < SCTP_DEFAULT_MINSEGMENT)) { @@ -265,12 +266,19 @@ bool sctp_transport_update_pmtu(struct s pmtu = SCTP_TRUNC4(pmtu); if (dst) { - dst->ops->update_pmtu(dst, t->asoc->base.sk, NULL, pmtu); + struct sctp_pf *pf = sctp_get_pf_specific(dst->ops->family); + union sctp_addr addr; + + pf->af->from_sk(&addr, sk); + pf->to_sk_daddr(&t->ipaddr, sk); + dst->ops->update_pmtu(dst, sk, NULL, pmtu); + pf->to_sk_daddr(&addr, sk); + dst = sctp_transport_dst_check(t); } if (!dst) { - t->af_specific->get_dst(t, &t->saddr, &t->fl, t->asoc->base.sk); + t->af_specific->get_dst(t, &t->saddr, &t->fl, sk); dst = t->dst; }