Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp6558072ybx; Mon, 11 Nov 2019 10:56:00 -0800 (PST) X-Google-Smtp-Source: APXvYqx/gxQRT0HH2Ji+6TsPCAqgvI3K+pqpbmRCCjuk2BfOJIt1+0pAMJUu5zMhiK8CKYMUmOhX X-Received: by 2002:a17:906:1542:: with SMTP id c2mr23798596ejd.80.1573498560590; Mon, 11 Nov 2019 10:56:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573498560; cv=none; d=google.com; s=arc-20160816; b=aeISiJe0xEtTZp1+hqewduktdY1mlNnVwE3oA1Qg5zqVeZQ965fcWrGHdyAjs9x2db pV+nhk5Z61+NaS27TfeGzR8TAe4uCbs8vs7238IgyImxdy2+lp12TsMpPMpB+W9MXG1U TYs+cuPw8lwZIamH9lwiwruquZkgCtJ+sSlDBNbZF2iTf+rAW1HTSeAbPPiK2WJuqB+5 r2WpVY4wEgXZQh+98P8XsgLw/eWR4923OsS9rTJlA2dWkdE2RI1bjliuvaXMiTCANHAJ wLGJFb+LrFi925dvRcTuwQ48+EIGnyZX9vtiZkKPwp1HLhQ1qyeCcXdeNWLaKXX3ODC8 Bvjg== 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=IEEIApS6oL/GEUzEZi8krnGO++9bJ5z0lOzFHa4t1y8=; b=sWJRfiw3LNV9xPLAoDbTfnSCWtLVhHt9Frkvv8n4wzzlssNZH/EtD7HKJ0nfUdwN4j 48kSLntOFloc4/918kt5ZTnYPx3gy18rHL77ydF/peXOEKNJk7RyEyuhoHmJstvonrVS 0144VbiFanPolyqZ8enH4pTOj2/RCBvFFDVsseVdveYw2w28+Jo3P1BIqOIAurz5z/2U MIscbQX58U6ZOWObuA16NEh39hILSwm9i7ZDm3NtOgBoT5/Yn12n/vb+kThKVtI0W4sp xW3zMHEgU4DqUxtVu6HiITvZKHowRTecKCwtG3MJFqNK99BA7KDVJWlKq5ArV77I2NGV nvIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mr12KgQn; 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 x19si9847569ejv.94.2019.11.11.10.55.36; Mon, 11 Nov 2019 10:56:00 -0800 (PST) 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=mr12KgQn; 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 S1729416AbfKKSxA (ORCPT + 99 others); Mon, 11 Nov 2019 13:53:00 -0500 Received: from mail.kernel.org ([198.145.29.99]:47454 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728848AbfKKSwy (ORCPT ); Mon, 11 Nov 2019 13:52:54 -0500 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 060DC20818; Mon, 11 Nov 2019 18:52:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573498373; bh=N1fXnElCxnJo7SUkIASvC5jDqYqX/TV4zRbeym2fMSg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mr12KgQnkzwq5HrLuu+An/EHRsdzKxNvgnvD0qdCYK5jhv9whxCEnwdEThe9SJrC6 8N4GhLF6Gj4Vuws5p+khM0/jQpSDbqoI7gMIsbjbsC3POoPLlX5Jvv4WLnzKp7cj40 chGwC3OLtuvt/jZn1DZXSr1sCiXSZPDyStKEIBIk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Potnuri Bharat Teja , Doug Ledford , Sasha Levin Subject: [PATCH 5.3 100/193] iw_cxgb4: fix ECN check on the passive accept Date: Mon, 11 Nov 2019 19:28:02 +0100 Message-Id: <20191111181508.514147291@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191111181459.850623879@linuxfoundation.org> References: <20191111181459.850623879@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: Potnuri Bharat Teja [ Upstream commit 612e0486ad0845c41ac10492e78144f99e326375 ] pass_accept_req() is using the same skb for handling accept request and sending accept reply to HW. Here req and rpl structures are pointing to same skb->data which is over written by INIT_TP_WR() and leads to accessing corrupt req fields in accept_cr() while checking for ECN flags. Reordered code in accept_cr() to fetch correct req fields. Fixes: 92e7ae7172 ("iw_cxgb4: Choose appropriate hw mtu index and ISS for iWARP connections") Signed-off-by: Potnuri Bharat Teja Link: https://lore.kernel.org/r/20191003104353.11590-1-bharat@chelsio.com Signed-off-by: Doug Ledford Signed-off-by: Sasha Levin --- drivers/infiniband/hw/cxgb4/cm.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c index e87fc04084704..9e8eca7b613c0 100644 --- a/drivers/infiniband/hw/cxgb4/cm.c +++ b/drivers/infiniband/hw/cxgb4/cm.c @@ -2424,20 +2424,6 @@ static int accept_cr(struct c4iw_ep *ep, struct sk_buff *skb, enum chip_type adapter_type = ep->com.dev->rdev.lldi.adapter_type; pr_debug("ep %p tid %u\n", ep, ep->hwtid); - - skb_get(skb); - rpl = cplhdr(skb); - if (!is_t4(adapter_type)) { - skb_trim(skb, roundup(sizeof(*rpl5), 16)); - rpl5 = (void *)rpl; - INIT_TP_WR(rpl5, ep->hwtid); - } else { - skb_trim(skb, sizeof(*rpl)); - INIT_TP_WR(rpl, ep->hwtid); - } - OPCODE_TID(rpl) = cpu_to_be32(MK_OPCODE_TID(CPL_PASS_ACCEPT_RPL, - ep->hwtid)); - cxgb_best_mtu(ep->com.dev->rdev.lldi.mtus, ep->mtu, &mtu_idx, enable_tcp_timestamps && req->tcpopt.tstamp, (ep->com.remote_addr.ss_family == AF_INET) ? 0 : 1); @@ -2483,6 +2469,20 @@ static int accept_cr(struct c4iw_ep *ep, struct sk_buff *skb, if (tcph->ece && tcph->cwr) opt2 |= CCTRL_ECN_V(1); } + + skb_get(skb); + rpl = cplhdr(skb); + if (!is_t4(adapter_type)) { + skb_trim(skb, roundup(sizeof(*rpl5), 16)); + rpl5 = (void *)rpl; + INIT_TP_WR(rpl5, ep->hwtid); + } else { + skb_trim(skb, sizeof(*rpl)); + INIT_TP_WR(rpl, ep->hwtid); + } + OPCODE_TID(rpl) = cpu_to_be32(MK_OPCODE_TID(CPL_PASS_ACCEPT_RPL, + ep->hwtid)); + if (CHELSIO_CHIP_VERSION(adapter_type) > CHELSIO_T4) { u32 isn = (prandom_u32() & ~7UL) - 1; opt2 |= T5_OPT_2_VALID_F; -- 2.20.1