Re: [PATCH v5 5/6] scsi: ufs: core: Remove completed-without-interrupt path in ufshcd_abort()
From: Bean Huo
Date: Thu Oct 22 2026 - 17:24:37 EST
On Thu, 2026-10-22 at 11:44 +0800, Stanley Jhu wrote:
> In SDB mode, a command that times out right as the controller finishes
> it can be completed twice:
>
> 1. The command times out and scsi_timeout() schedules ufshcd_abort().
> 2. The controller finishes the command and clears its doorbell bit in
> REG_UTP_TRANSFER_REQ_DOOR_BELL, while the completion handler has not
> yet cleared BIT(tag) in hba->outstanding_reqs.
> 3. ufshcd_abort() sees the doorbell bit clear and calls
> __ufshcd_transfer_req_compl() without clearing BIT(tag) in
> hba->outstanding_reqs.
> 4. The normal completion handler or the logical unit reset that follows
> sees BIT(tag) still set in hba->outstanding_reqs and completes the
> same command a second time.
>
> This branch only exists for a rare corner case, a completion interrupt
> that is lost or arrives late. Remove it to simplify the abort path and
> leave such a command to the SCSI error handler, like any other command
> that cannot be aborted. The cost is a slower recovery in this corner
> case, which is acceptable since it only happens after a timeout.
>
> Fixes: 169f5eb28869 ("scsi: ufs: Optimize SCSI command processing")
> Cc: stable@xxxxxxxxxxxxxxx
> Link: https://lore.kernel.org/r/fdb5c391-01ef-4a23-94c2-4f3853909348@xxxxxxx
> Signed-off-by: Stanley Jhu <stanleyjhu@xxxxxxxxxx>
Reviewed-by: Bean Huo <beanhuo@xxxxxxxxxx>