From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BFC33D96F; Wed, 20 Dec 2023 14:50:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Z3nCfqbl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0F9D8C433C7; Wed, 20 Dec 2023 14:50:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1703083848; bh=RbnKwhHVCMmtzs/gnnNR6IeXwTlPNVrUWe2V3JfuahE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Z3nCfqbl6K1XjAuARXoTPBFJ4X57GygwJAsgp5Bhqh5TElE38LXeIuE3xiwom6FuV sj+Gks9N0DocsTEKOFN0cVX81Fw+LmZE2hSp61o93gh17Z5U35bJAaSxdpFqF02vG+ mTU+I2qLqsUjjO0HsEaHEtJsxGeCWAaP5PDq9qHt2N2gnvBCjlHC08RgKQ5YBbqEIo vDpgk8VKOfm8jEYaWL1LTvPwzRS+YsuglKONF+ng0QclXwr8wPhOFuytfWhrlrSjYd RIFHJu8uTDCMkHuU7R3kSR/s9epcDw7Z9+QMQ+19oovFil/EYNtW71p7mEa/tWYKN/ Eui6fDFNUu+Sg== Date: Wed, 20 Dec 2023 20:20:31 +0530 From: Manivannan Sadhasivam To: Can Guo Cc: bvanassche@acm.org, adrian.hunter@intel.com, beanhuo@micron.com, avri.altman@wdc.com, junwoo80.lee@samsung.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, linux-arm-msm@vger.kernel.org, Alim Akhtar , "James E.J. Bottomley" , Stanley Chu , Asutosh Das , Peter Wang , "Bao D. Nguyen" , Arthur Simchaev , open list Subject: Re: [PATCH] scsi: ufs: core: Let the sq_lock protect sq_tail_slot access Message-ID: <20231220145031.GI3544@thinkpad> References: <1702913550-20631-1-git-send-email-quic_cang@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1702913550-20631-1-git-send-email-quic_cang@quicinc.com> On Mon, Dec 18, 2023 at 07:32:17AM -0800, Can Guo wrote: > If access sq_tail_slot without the protection from the sq_lock, race > condition can have multiple SQEs copied to duplicate SQE slot(s), which can > lead to multiple incredible stability issues. Fix it by moving the *dest > initialization, in ufshcd_send_command(), back under protection from the > sq_lock. > > Fixes: 3c85f087faec ("scsi: ufs: mcq: Use pointer arithmetic in ufshcd_send_command()") Cc: stable@vger.kernel.org > Signed-off-by: Can Guo Reviewed-by: Manivannan Sadhasivam - Mani > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index ae9936f..2994aac 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -2274,9 +2274,10 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag, > if (is_mcq_enabled(hba)) { > int utrd_size = sizeof(struct utp_transfer_req_desc); > struct utp_transfer_req_desc *src = lrbp->utr_descriptor_ptr; > - struct utp_transfer_req_desc *dest = hwq->sqe_base_addr + hwq->sq_tail_slot; > + struct utp_transfer_req_desc *dest; > > spin_lock(&hwq->sq_lock); > + dest = hwq->sqe_base_addr + hwq->sq_tail_slot; > memcpy(dest, src, utrd_size); > ufshcd_inc_sq_tail(hwq); > spin_unlock(&hwq->sq_lock); > -- > 2.7.4 > -- மணிவண்ணன் சதாசிவம்