Received: by 10.192.165.156 with SMTP id m28csp932085imm; Wed, 18 Apr 2018 00:33:55 -0700 (PDT) X-Google-Smtp-Source: AIpwx48P7G/Y4g03vdxT5lqYQaiSg9987VKZ74bD4t1V9NUBMMaylaPfxSlOffla9LxxzT7betdU X-Received: by 2002:a17:902:102:: with SMTP id 2-v6mr1087889plb.48.1524036835033; Wed, 18 Apr 2018 00:33:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524036834; cv=none; d=google.com; s=arc-20160816; b=HEvbtcuhJ4t4l9iiNyikhGZ8mQsNjnBpuk7v2gf46LV8zE4phSO1kgSfGx07KScSGo Rs67xEHqn3n4Ao2xAfBN2f8pWcWFjs7ONpKPfhmqc9g06jfQOFZKyInfz6mWnfZXN7TU Bcryqrz+8eC2BEv1xe1WlSyyBvEz2cVR1hYm+9IBPS4O7jch9Lfboew6Q5wEIENdxOt/ uJE3Kql0JXHoRVk6GpzXLDZ1SDJblJYp8+P9Ef2lYV9i+jU0Ju+1SKwjUKB0R3AP2QgH N58+rjN9+KOD9AUJFQLN6g6BTF6xGhQ78IfgvAsoCyPpgRkQwfwyQfw5g8EPnD8GqL1s kjLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:to:from :dkim-signature:arc-authentication-results; bh=oDvgzqCYhhk4oOp1P6PPeGQtxZ8BgVwY1JG7Rgywq+o=; b=y2+A5F+KZOfdtk/7Q6UQ10T5nMMDQNpCFCDnCoJp6AprFY1UARtD1Hue1Kk0raKIkV AXNk80+u2eMBn5qXI/GIMGeVS7Y0CKRCEkTSrWyxu8mJHu/rshpjjFPjJjtsVFpy66WL 3Sg8HXGhfKYEsLfn4lqA9P89EuNAvzE/5EhEZb2eFMfF8RqtJyJzFHTic2lpcewoupZ1 7ArCFR99w0Dqk0A0fepILuQmCYk0Q/t5l5P3uL/yv6Oa5wdjlDugZOWqhK8wOKLeEgb+ nD3hhPgeAqd2k915/dkTY8z9IekXEL330VYWOO0r1tv1j0KfyRc9enFxfroDOoTeSsK+ Ojog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=rCeCzOLh; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 196si595882pgb.674.2018.04.18.00.33.41; Wed, 18 Apr 2018 00:33:54 -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=@oracle.com header.s=corp-2017-10-26 header.b=rCeCzOLh; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753326AbeDRHcg (ORCPT + 99 others); Wed, 18 Apr 2018 03:32:36 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:42776 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752947AbeDRHcf (ORCPT ); Wed, 18 Apr 2018 03:32:35 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w3I7V79j088673; Wed, 18 Apr 2018 07:32:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id; s=corp-2017-10-26; bh=oDvgzqCYhhk4oOp1P6PPeGQtxZ8BgVwY1JG7Rgywq+o=; b=rCeCzOLh3pGMUA4rBqMNYijTd7jFo0jnAtE/u7EZrICx4OSAWOOcadocF8768orKtOzY JHwpxKgOmmmqgQZyhTclJbA8W2H+2yb2dpt/b81xEuqI8W7iGMR7TaNjbMcRbg1nOu7x mv+3eD4/7DmbEcAbE6J5akUu6Lg2rYeIKf9M/0/2Vj0VviPtWuhebCDSGWOl4iw9L1/Y Wrka72RCxTP0HWNGmRpdKYNvC/lXh6gTDysJSRLpX/ejv/mWA7VCphCac7Fu0VpcEkb3 fg3gz2H76QtMmXua4Jx2X0uCs8mkcaduBFN9khjozKFijv5k0T1MYrgsZqyuNRxQsZTr tw== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp2120.oracle.com with ESMTP id 2hdrxn998y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Apr 2018 07:32:12 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w3I7WBAL016539 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Apr 2018 07:32:11 GMT Received: from abhmp0016.oracle.com (abhmp0016.oracle.com [141.146.116.22]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w3I7WBh7029419; Wed, 18 Apr 2018 07:32:11 GMT Received: from will-ThinkCentre-M910s.cn.oracle.com (/10.182.69.123) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 18 Apr 2018 00:32:10 -0700 From: Jianchao Wang To: keith.busch@intel.com, axboe@fb.com, hch@lst.de, sagi@grimberg.me, linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] nvme: fix the suspicious RCU usage warning in nvme_mpath_clear_current_path Date: Wed, 18 Apr 2018 15:32:47 +0800 Message-Id: <1524036767-3701-1-git-send-email-jianchao.w.wang@oracle.com> X-Mailer: git-send-email 2.7.4 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8866 signatures=668698 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=974 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1804180070 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With lockdep enabled, when trigger nvme_remove, suspicious RCU usage warning will be printed out. Fix it with adding srcu_read_lock/unlock in it. Signed-off-by: Jianchao Wang --- drivers/nvme/host/nvme.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 061fecf..d326c23 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -446,9 +446,14 @@ void nvme_mpath_remove_disk(struct nvme_ns_head *head); static inline void nvme_mpath_clear_current_path(struct nvme_ns *ns) { struct nvme_ns_head *head = ns->head; + int srcu_idx; - if (head && ns == srcu_dereference(head->current_path, &head->srcu)) - rcu_assign_pointer(head->current_path, NULL); + if (head) { + srcu_idx = srcu_read_lock(&head->srcu); + if (ns == srcu_dereference(head->current_path, &head->srcu)) + rcu_assign_pointer(head->current_path, NULL); + srcu_read_unlock(&head->srcu, srcu_idx); + } } struct nvme_ns *nvme_find_path(struct nvme_ns_head *head); -- 2.7.4