Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp227768pxb; Wed, 18 Nov 2020 22:33:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJx/rN/owDmuPtUKgfEkne4pwiWgECcNzaDxlCPQ0TQe1y21d9prdUAQYj+0p2pPs6m/wEPm X-Received: by 2002:a17:906:ae95:: with SMTP id md21mr26136380ejb.425.1605767585034; Wed, 18 Nov 2020 22:33:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605767585; cv=none; d=google.com; s=arc-20160816; b=E8VSR9Y//U0GcLn6u774261vlcoPMa45gydMoW0KH2Xc2RoAlHkX8U6HmcsE8qt6+L utOKjgbG9VZXY6O1iDPYXUX2np16uhxsmk3JnCI+oE3K5cSAXvTtgvyTOrVUilEUy3p1 myeQppVc5MTDXFs2JAaKX57flRA5P9HGG6epWuwlp1ewuDuBLA0yS9atsA9qdyzgcdq2 LAVWfRel18fwH4uuPysD5JeszWsabnfKtYBPezfwKrTPiK4XRndecegQ7WhfymjX4pnO bKXw2c5U2tmk8aDgTGJMTYPGSHr0876QTlsbJV4RrVO44c2p/bb3fwlAQi/rEzOwTerN 6Xkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=HKRcGVqHFciG6ENtJx3tH0Zo8hjQdNl2u3UtayKZxRQ=; b=IJQM8F7P9/L936qZmKVPgO9KCQFPp5XX+Tm9QnmxknzkYGAkoK+csYUHSVRk500TO+ hcC8rsEQ8I6tx0S27lGkIfzAbpF0OOGY2Y7iJ2RLZ5W2p5sWFI3sB+yIpOeZdB6xYdVw OTostuLZ/JOw5Hs4WQ0dMyyL95MAgWYJs/LiHZDc9ggYI5ObdbuC9vV89M4MOKUgmyuP IdNIYyWlqNks1LDHR689sGxbuKE53tXQiORbuJSczui0LT3mtIYSoSwCih0QhS1KyLYi pL2Z+0mBypCEORgoKH++jU1ebrdaQ9yPGl8i2aH7sCXg4QBW+5EkElbiGKgc+FSCe7RY /tCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 41si1812020edq.580.2020.11.18.22.32.41; Wed, 18 Nov 2020 22:33:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726138AbgKSG3X (ORCPT + 99 others); Thu, 19 Nov 2020 01:29:23 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:47480 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725907AbgKSG3X (ORCPT ); Thu, 19 Nov 2020 01:29:23 -0500 X-UUID: 4000dd806cf34255bf2b698982f66a2f-20201119 X-UUID: 4000dd806cf34255bf2b698982f66a2f-20201119 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1887966917; Thu, 19 Nov 2020 14:29:18 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 19 Nov 2020 14:29:17 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 19 Nov 2020 14:29:17 +0800 From: Stanley Chu To: , , , , CC: , , , , , , , , , , , , , , , , Stanley Chu Subject: [PATCH v1] scsi: ufs: Fix race between shutdown and runtime resume flow Date: Thu, 19 Nov 2020 14:29:16 +0800 Message-ID: <20201119062916.12931-1-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If UFS host device is in runtime-suspended state while UFS shutdown callback is invoked, UFS device shall be resumed for register accesses. Currently only UFS local runtime resume function will be invoked to wake up the host. This is not enough because if someone triggers runtime resume from block layer, then race may happen between shutdown and runtime resume flow, and finally lead to unlocked register access. To fix this kind of issues, in ufshcd_shutdown(), use pm_runtime_get_sync() instead of resuming UFS device by ufshcd_runtime_resume() "internally" to let runtime PM framework manage the whole resume flow. Fixes: 57d104c153d3 ("ufs: add UFS power management support") Signed-off-by: Stanley Chu --- drivers/scsi/ufs/ufshcd.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 80cbce414678..bb16cc04f106 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8941,11 +8941,7 @@ int ufshcd_shutdown(struct ufs_hba *hba) if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba)) goto out; - if (pm_runtime_suspended(hba->dev)) { - ret = ufshcd_runtime_resume(hba); - if (ret) - goto out; - } + pm_runtime_get_sync(hba->dev); ret = ufshcd_suspend(hba, UFS_SHUTDOWN_PM); out: -- 2.18.0