Skip to content

Commit 5375590

Browse files
ping.gaomartinkpetersen
authored andcommitted
scsi: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort()
After UFS_ABORT_TASK has been processed successfully, the host will generate MCQ IRQ for ABORT TAG with response OCS_ABORTED. This results in ufshcd_compl_one_cqe() calling ufshcd_release_scsi_cmd(). But ufshcd_mcq_abort() already calls ufshcd_release_scsi_cmd(), resulting in __ufshcd_release() being called twice. This means hba->clk_gating.active_reqs will be decreased twice, making it go negative. Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort(). Fixes: f1304d4 ("scsi: ufs: mcq: Added ufshcd_mcq_abort()") Signed-off-by: ping.gao <ping.gao@samsung.com> Link: https://lore.kernel.org/r/20250516083812.3894396-1-ping.gao@samsung.com Reviewed-by: Peter Wang <peter.wang@mediatek.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 7727a9d commit 5375590

File tree

1 file changed

+0
-6
lines changed

1 file changed

+0
-6
lines changed

drivers/ufs/core/ufs-mcq.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,6 @@ int ufshcd_mcq_abort(struct scsi_cmnd *cmd)
674674
int tag = scsi_cmd_to_rq(cmd)->tag;
675675
struct ufshcd_lrb *lrbp = &hba->lrb[tag];
676676
struct ufs_hw_queue *hwq;
677-
unsigned long flags;
678677
int err;
679678

680679
/* Skip task abort in case previous aborts failed and report failure */
@@ -713,10 +712,5 @@ int ufshcd_mcq_abort(struct scsi_cmnd *cmd)
713712
return FAILED;
714713
}
715714

716-
spin_lock_irqsave(&hwq->cq_lock, flags);
717-
if (ufshcd_cmd_inflight(lrbp->cmd))
718-
ufshcd_release_scsi_cmd(hba, lrbp);
719-
spin_unlock_irqrestore(&hwq->cq_lock, flags);
720-
721715
return SUCCESS;
722716
}

0 commit comments

Comments
 (0)