Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp538744ybz; Wed, 22 Apr 2020 03:15:13 -0700 (PDT) X-Google-Smtp-Source: APiQypI/bwDbM8Mdo7SY7q65/pPUfjY7xADCjMRtvYZp10S2qpWYby2YUOgAuOamOHf4FvEaiKnt X-Received: by 2002:a17:906:f1c4:: with SMTP id gx4mr24678973ejb.171.1587550513274; Wed, 22 Apr 2020 03:15:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587550513; cv=none; d=google.com; s=arc-20160816; b=rGuvnPa9H8cm7kWN+LaL3C5Q/ixqj/TCh2Zbb3Ramky9HuaBQNP5WQetWNlmfsmDFM RAxn4E09/hLJ9kLYTae/ug2CH0uNG0vu5NEDr3zJSnxxPgKSSxeuKVRaWJy1bhp0NcuC if/x23eIT8tKemvjAXrlY+l0rszhdqlGmEwBL5nLTP3o1wC7Uh32PvULEEhhctmMxsmL s/jtKit5CzXdgzQ5N5Svj5P+PHXg97ayCy3P9Q5goM1B2p7N4rUAlI+8ukhT3on5ZkZT aVcx+Ru8RGKxmtZjpG6THbbISFQJRRAW9r0Yw52542IpBfovv04qHW27ivjekvbXkqlx 01qQ== 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=/9ZnsnQPVoSxHDpPG/EWDREju5AVJ34lwDdAas8Bv0s=; b=cVxGknzZcchGijeBYZ6iy0Ykc+3YCRV7dinw7FdWq/RO8sYuQQCwMBsua4Q6IVdZSs 9KnlX5BPX5CzFl9JgqsSpQ5qmf1qyYL9HTE38jHA3GdH1bW3eW7M6Vq5vYXtDrZQx6t1 G9klTCn3dWzpZdWELKPBRwlGOjH34yL+skA9rsCgUr4Zcvg8JgTa8kVFBzLTPrNcbNPj EQlZzYJbUSB9axGqXyB4DOipMUKuWfOJcBR81I7gSDkHBcIcUILxETigxRZ8g3e16NLa UscQhLVNStHEvrJbyqs0o09Dilm6EodKgdDKFpRxmNjls1svFHLvjF7PExVkDw7L4T+8 m2IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Z7ujgR5P; 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 1si817243ejx.68.2020.04.22.03.14.50; Wed, 22 Apr 2020 03:15:13 -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=Z7ujgR5P; 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 S1729361AbgDVKMs (ORCPT + 99 others); Wed, 22 Apr 2020 06:12:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:45692 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728769AbgDVKMe (ORCPT ); Wed, 22 Apr 2020 06:12:34 -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 98EC920575; Wed, 22 Apr 2020 10:12:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587550354; bh=+SrwVG1wkcsfrVwkbz4KAAKDbgLeN74p2Cc+qM20LlY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z7ujgR5POl3x7EgGWVGDs12FjtwdWUi+WDGYivKJ36FNspu4sfgO7msb5+cGQdg0O I/dMw+i/8LZAVX2ofCsONkuzpEsD8FHcREy0xb59UAzDikWT2fnfAfa0iKyLboduI+ s7JBVINHM4EUtoRxlZIrjnZk8hiKTW20T6+BO/LA= 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.14 113/199] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Date: Wed, 22 Apr 2020 11:57:19 +0200 Message-Id: <20200422095108.968120627@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200422095057.806111593@linuxfoundation.org> References: <20200422095057.806111593@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 @@ -1448,6 +1448,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);