[PATCH v1 1/2] ufs: core: complete scsi command after release
Bart Van Assche
bvanassche at acm.org
Fri Aug 23 09:20:29 PDT 2024
On 8/23/24 3:07 AM, peter.wang at mediatek.com wrote:
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 0b3d0c8e0dda..4bcd4e5b62bd 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -6482,8 +6482,12 @@ static bool ufshcd_abort_one(struct request *rq, void *priv)
> if (!hwq)
> return 0;
> spin_lock_irqsave(&hwq->cq_lock, flags);
> - if (ufshcd_cmd_inflight(lrbp->cmd))
> + if (ufshcd_cmd_inflight(lrbp->cmd)) {
> + struct scsi_cmnd *cmd = lrbp->cmd;
> + set_host_byte(cmd, DID_REQUEUE);
> ufshcd_release_scsi_cmd(hba, lrbp);
> + scsi_done(cmd);
> + }
> spin_unlock_irqrestore(&hwq->cq_lock, flags);
> }
Hmm ... isn't the ufshcd_complete_requests() call in ufshcd_abort_all()
expected to complete these commands? Can the above change lead to
scsi_done() being called twice, something that is not allowed?
Bart.
More information about the Linux-mediatek
mailing list