Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp662259ybh; Tue, 10 Mar 2020 06:05:37 -0700 (PDT) X-Google-Smtp-Source: ADFU+vttuSgKxlpuTlpzJYB6ymAgkgWOM6D8lh+9+gbnFfhMILPUG+TfJ1ySYZ0YWLS4YFdlL6ei X-Received: by 2002:a9d:4541:: with SMTP id p1mr17147230oti.199.1583845537278; Tue, 10 Mar 2020 06:05:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583845537; cv=none; d=google.com; s=arc-20160816; b=P3koyvoMg4ZVglv+8ifGpwPJez4GBMQbGxmm/DjrorkqAKpfppV+GV7mNvPG8ug+Ic MhAixvxwFl4ShaJ5/G3U3+6ezDL5jKnuw7Ox+9uKPagglkzYBegX3eIRWA+x/KNXC684 X5R0U65R/FAMSxhbRI10PIHgcMRQ4ZKmqKzap9kUG9DRrLR57rdnL7m+FgVTZZU5ZLeP lKrlAvGtYa74mRwsxrtlb5aRK/BP0+VBWMQc+47BuTgEWyrjaORh7Ez6vF+xQj/ZAfQs mNiHjy2INpdj3yY5Ad7wBgqx2fIuO77Ro0Eb4pGanJlWJF6Hc0t4XJZDkV/FMWpbHk+b 2sNg== 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=DZSQz0LXgglmch2K4ElcqVh+ja+i9CNB7GBdTeXxOK8=; b=uXIUrQWpXztmB6YRSk2qEtike0Z5xwfmgRZ15PbxCfJw3jV+hZ4pIfEWM0m2cRIB8W zojJpEbjAKM9Cpr1bNGP6rgKPmfp0kmSHMEB3jbmVh4ZMZbDzIEZpimfmEo1tyEDXthR udyqU3JD0iLHMrFDr+2IwLa5+kDkL11OLC/tKahjGflgKCzZyx8Sl2N5TK57VltR0tT0 eDuX4vJfQN8M5cetSD42zemV/P5Tc4nIiP5xQNfqQTfpiWo8ujnpMwIy9GwYPA79MR92 YfLTEsgmWpghMENw7bpiH665yTAsHVSff534YjtbLiUxQo4YaKIYn+7CA9RVT2W41fxk gwCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=I7m1DZa2; 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 18si5323004oiq.71.2020.03.10.06.05.07; Tue, 10 Mar 2020 06:05:37 -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=I7m1DZa2; 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 S1730591AbgCJND1 (ORCPT + 99 others); Tue, 10 Mar 2020 09:03:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:48004 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728044AbgCJNDV (ORCPT ); Tue, 10 Mar 2020 09:03:21 -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 3BC8124694; Tue, 10 Mar 2020 13:03:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583845400; bh=CiNs7x12jeNg7k3CSqr4Z8cmvULNQgLBwO9qaZVo5KI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I7m1DZa2VNlPDBhAmvxDelZNX6jOOw5BPUacLrhB4hds1gyxb7SzaCqmM7JC4T7sB Mb4PdxozNx5r3MJXtsgfdmHqYb6n9A4QFhj8U3tVJ3UxjLodx787NAESvKo1jptIGb wEiOV+seiIPNZ5Moeo2cxzh3OTeSMJMRpn+/HGXk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mike Marciniszyn , Dennis Dalessandro , Jason Gunthorpe Subject: [PATCH 5.5 170/189] IB/hfi1, qib: Ensure RCU is locked when accessing list Date: Tue, 10 Mar 2020 13:40:07 +0100 Message-Id: <20200310123657.080773613@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200310123639.608886314@linuxfoundation.org> References: <20200310123639.608886314@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: Dennis Dalessandro commit 817a68a6584aa08e323c64283fec5ded7be84759 upstream. The packet handling function, specifically the iteration of the qp list for mad packet processing misses locking RCU before running through the list. Not only is this incorrect, but the list_for_each_entry_rcu() call can not be called with a conditional check for lock dependency. Remedy this by invoking the rcu lock and unlock around the critical section. This brings MAD packet processing in line with what is done for non-MAD packets. Fixes: 7724105686e7 ("IB/hfi1: add driver files") Link: https://lore.kernel.org/r/20200225195445.140896.41873.stgit@awfm-01.aw.intel.com Reviewed-by: Mike Marciniszyn Signed-off-by: Dennis Dalessandro Signed-off-by: Jason Gunthorpe Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/hw/hfi1/verbs.c | 4 +++- drivers/infiniband/hw/qib/qib_verbs.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) --- a/drivers/infiniband/hw/hfi1/verbs.c +++ b/drivers/infiniband/hw/hfi1/verbs.c @@ -515,10 +515,11 @@ static inline void hfi1_handle_packet(st opa_get_lid(packet->dlid, 9B)); if (!mcast) goto drop; + rcu_read_lock(); list_for_each_entry_rcu(p, &mcast->qp_list, list) { packet->qp = p->qp; if (hfi1_do_pkey_check(packet)) - goto drop; + goto unlock_drop; spin_lock_irqsave(&packet->qp->r_lock, flags); packet_handler = qp_ok(packet); if (likely(packet_handler)) @@ -527,6 +528,7 @@ static inline void hfi1_handle_packet(st ibp->rvp.n_pkt_drops++; spin_unlock_irqrestore(&packet->qp->r_lock, flags); } + rcu_read_unlock(); /* * Notify rvt_multicast_detach() if it is waiting for us * to finish. --- a/drivers/infiniband/hw/qib/qib_verbs.c +++ b/drivers/infiniband/hw/qib/qib_verbs.c @@ -329,8 +329,10 @@ void qib_ib_rcv(struct qib_ctxtdata *rcd if (mcast == NULL) goto drop; this_cpu_inc(ibp->pmastats->n_multicast_rcv); + rcu_read_lock(); list_for_each_entry_rcu(p, &mcast->qp_list, list) qib_qp_rcv(rcd, hdr, 1, data, tlen, p->qp); + rcu_read_unlock(); /* * Notify rvt_multicast_detach() if it is waiting for us * to finish.