On 9/19/23 15:47, Daejun Park wrote:
> Bart Van Assche wrote:
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index dc1285351336..5fccec3c1091 100644
@@ -2822,7 +2822,8 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
int err = 0;
struct ufs_hw_queue *hwq = NULL;
- WARN_ONCE(tag < 0 || tag >= hba->nutrs, "Invalid tag %d\n", tag);
+ if (WARN_ONCE(tag < 0 || tag >= hba->nutrs, "Invalid tag %d\n", tag))
+ return 0;
As far as I know, a return 0 from a queuecommand means that the request was accepted by LLD.
This is on purpose. I think that it is better to issue a warning and to
cause command processing to hang rather than to return a code that
causes the SCSI core to resubmit a command with an invalid tag and to
cause an infinite loop.