Received: by 10.213.65.68 with SMTP id h4csp283641imn; Fri, 23 Mar 2018 04:42:22 -0700 (PDT) X-Google-Smtp-Source: AG47ELv+P5lWLtcdqFMFhBjCzL6v64g7LTZGozqW92YhybngzBflpozXiwwVR9jXtCTXlFiLdElT X-Received: by 10.99.176.71 with SMTP id z7mr19391404pgo.74.1521805342114; Fri, 23 Mar 2018 04:42:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521805342; cv=none; d=google.com; s=arc-20160816; b=iv4YXQ5QWbnTs13d2NsiJyo6lj+DwGJaX7DZ83P1z8prI4vg0vTJNPoCHs1Q2jLbl4 1adE787ZzE0i+ChYGlC+n/SV0fy/YedbdLQrp5JMaHhQNPU39dcJB1rUVCsU6T+tjnkf LS3lCrk+f9nT1cm5h/Uk7rlUjXHQQYfhcdMJ7pH5ZUpQfSoADdvkooBF5tcJ8VGtGCPj bPunsSZ9pAVapW0BeHJfBm8VLncooWH9sB0XZNPP4HXexT4nXyw6wK2FA9FrvoVmhdpm mNhO1ArB4nMi2KrMV2TqBWdMQnxICt/SYBu71aOBrjVjDu2wgjnk09APAy2zX7MJz1Oi C+tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=TfaUFbH+xK7OKlzWNemA0QGFrs/iT73oxruZigbvhws=; b=hfPnjC3NFbypyELksJ2d+Fcoxq5wq91516YlEXAZ+rxQOxaATlGEuQ1rjW+P47/ZCM 7VPY2dDBXZztmouQ66e6SYizfWi65+/bSZFdkvF13B9/f5ZQp0qsiOKtYQhwmndzGZdG yPWyiRunfl+VVdp+qbpJkps2oL0g5hP39UWQii+f4AVICm1jblh1ZdUlb0MbXA5bXKbm r/KBjvgvRNassRpxL1FAQ0eVZlF/uf69KjvhOODnxj1/IP3oLYveahAPYPJMaSl5nRET q5tbr49HPbnhJ2r8VuN6aX/kXT0unn9pkTlY58oSXj303Z+CZLH+a7/mpIQIK7Bv1qKL xw4w== ARC-Authentication-Results: i=1; mx.google.com; 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 z189si5892617pgb.220.2018.03.23.04.42.07; Fri, 23 Mar 2018 04:42:22 -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; 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 S1754598AbeCWKEE (ORCPT + 99 others); Fri, 23 Mar 2018 06:04:04 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:39020 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754550AbeCWKEC (ORCPT ); Fri, 23 Mar 2018 06:04:02 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 93341132F; Fri, 23 Mar 2018 10:04:01 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Hefty , Tatyana Nikolova , Shiraz Saleem , Doug Ledford Subject: [PATCH 4.14 72/77] RDMA/core: Do not use invalid destination in determining port reuse Date: Fri, 23 Mar 2018 10:54:46 +0100 Message-Id: <20180323094147.103833281@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180323094142.260022880@linuxfoundation.org> References: <20180323094142.260022880@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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: Tatyana Nikolova commit 9dea9a2ff61c5efb4d4937ae23b14babd25a5547 upstream. cma_port_is_unique() allows local port reuse if the quad (source address and port, destination address and port) for this connection is unique. However, if the destination info is zero or unspecified, it can't make a correct decision but still allows port reuse. For example, sometimes rdma_bind_addr() is called with unspecified destination and reusing the port can lead to creating a connection with a duplicate quad, after the destination is resolved. The issue manifests when MPI scale-up tests hang after the duplicate quad is used. Set the destination address family and add checks for zero destination address and port to prevent source port reuse based on invalid destination. Fixes: 19b752a19dce ("IB/cma: Allow port reuse for rdma_id") Reviewed-by: Sean Hefty Signed-off-by: Tatyana Nikolova Signed-off-by: Shiraz Saleem Signed-off-by: Doug Ledford Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/core/cma.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -3017,7 +3017,8 @@ static int cma_port_is_unique(struct rdm continue; /* different dest port -> unique */ - if (!cma_any_port(cur_daddr) && + if (!cma_any_port(daddr) && + !cma_any_port(cur_daddr) && (dport != cur_dport)) continue; @@ -3028,7 +3029,8 @@ static int cma_port_is_unique(struct rdm continue; /* different dst address -> unique */ - if (!cma_any_addr(cur_daddr) && + if (!cma_any_addr(daddr) && + !cma_any_addr(cur_daddr) && cma_addr_cmp(daddr, cur_daddr)) continue; @@ -3326,13 +3328,13 @@ int rdma_bind_addr(struct rdma_cm_id *id } #endif } + daddr = cma_dst_addr(id_priv); + daddr->sa_family = addr->sa_family; + ret = cma_get_port(id_priv); if (ret) goto err2; - daddr = cma_dst_addr(id_priv); - daddr->sa_family = addr->sa_family; - return 0; err2: if (id_priv->cma_dev)