Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3795209ybz; Mon, 20 Apr 2020 09:34:50 -0700 (PDT) X-Google-Smtp-Source: APiQypJFPskbvzk6SJbontn1oyfHGy+kzO7Pk5ps87zM5mzBdRDLQ9a7y/9sHs0N0HhvVmz1hf5F X-Received: by 2002:a17:906:7f01:: with SMTP id d1mr16467428ejr.49.1587400490401; Mon, 20 Apr 2020 09:34:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587400490; cv=none; d=google.com; s=arc-20160816; b=I+zHEWOftQF6aWMOP6hr4J65iyXVzfEZqR9XtolYXeeq32lfpuNRvtUUx8guMgRT5a a3jAL938COiRWYjtuztujyPmZMMPOiopdp5v1s6UQFFB7SPBMmfvlxS9bt3g8zplPhH1 K2jNlsERMrdthYlUbhiC18UY5YM9RA4oIHSAF3PLYkUugXg1v6d2xRPRh1vP0nNHvULw muDjIu5WBL7q2hPhE6ki+mftt1QUtIBHdjdsIaZ8oiOdtBfVpUvHdoG62H/1l2YUWiy6 23+8HcEOpSOCvO/sCDzPDuHZgQKhP6t3tLmkcnVy85W9Qtjw4R0F11j0WhmlffMjX47y IHKg== 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=BG5xHCnpGEYiF4/VyHDi8sIqxuCj/YRSWwfC4fg26x4=; b=kslb40Xo1NuwDbMoAoaC1LDPsKzWu9SM/VLq6hFG0aTUdSUqewAuQ/NVWwPuzXy9MA tXO1tbpDIgv8KZYQCZIgq8QbnqwLkyk6caT5zh6Sn1xmbn7yafW5FyvIU1asilPfCOvw iiYC/RF/Ix8wvSbL/xXbc6NlWo+zMRCFbVZi5I6n6Blw2l8YQ3yaZMRd4P4Mz0J/0ZGo vPf7fRq1opXldfmHLvg2Z1RfmpQti5g1RNMMQEgkrX5U9/YlMpaMWok31IYnDzhyzDvJ Q6Cr8TPJqgrk4HPQ2CEpvwl7CJzMManyHLOYvtxWYsftZozw8vbErPDqPH5LX8ZOeYXP lJ/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=nYXyezgM; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ca25si783528edb.389.2020.04.20.09.34.26; Mon, 20 Apr 2020 09:34:50 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=nYXyezgM; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728255AbgDTMvi (ORCPT + 99 others); Mon, 20 Apr 2020 08:51:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:44762 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729214AbgDTMsP (ORCPT ); Mon, 20 Apr 2020 08:48:15 -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 F3FEA206E9; Mon, 20 Apr 2020 12:48:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587386894; bh=yeLSGgzR6n88LM6EkHFaw2nAdyVzgk80CaFPsnUulog=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nYXyezgMwB54vZEknlCh0zorXIOU0turZ3MLYj1z6RVJV4jEgv9uzmM00xj7BdFzB JEdB8s+1cyL9kOStBbqfVE2givaIuoq3cAA50pWHQSW3FM5OuT4fyW+5NnRW6B8536 2hjQs9GKaQwERCUd8urLLGvGSShSYwfHObXqdsok= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hongwu Su , Asutosh Das , Bean Huo , Stanley Chu , Can Guo , "Martin K. Petersen" Subject: [PATCH 4.19 10/40] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Date: Mon, 20 Apr 2020 14:39:20 +0200 Message-Id: <20200420121454.614682734@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200420121444.178150063@linuxfoundation.org> References: <20200420121444.178150063@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: Can Guo commit c63d6099a7959ecc919b2549dc6b71f53521f819 upstream. The async version of ufshcd_hold(async == true), which is only called in queuecommand path as for now, is expected to work in atomic context, thus it should not sleep or schedule out. When it runs into the condition that clocks are ON but link is still in hibern8 state, it should bail out without flushing the clock ungate work. Fixes: f2a785ac2312 ("scsi: ufshcd: Fix race between clk scaling and ungate work") Link: https://lore.kernel.org/r/1581392451-28743-6-git-send-email-cang@codeaurora.org Reviewed-by: Hongwu Su Reviewed-by: Asutosh Das Reviewed-by: Bean Huo Reviewed-by: Stanley Chu Signed-off-by: Can Guo Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- drivers/scsi/ufs/ufshcd.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1563,6 +1563,11 @@ start: */ if (ufshcd_can_hibern8_during_gating(hba) && ufshcd_is_link_hibern8(hba)) { + if (async) { + rc = -EAGAIN; + hba->clk_gating.active_reqs--; + break; + } spin_unlock_irqrestore(hba->host->host_lock, flags); flush_work(&hba->clk_gating.ungate_work); spin_lock_irqsave(hba->host->host_lock, flags);