OSDN Git Service

scsi: ufs: core: Do not exit ufshcd_reset_and_restore() unless operational or dead
authorAdrian Hunter <adrian.hunter@intel.com>
Sat, 2 Oct 2021 15:45:49 +0000 (18:45 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Oct 2021 02:20:38 +0000 (22:20 -0400)
commit54a4045342a8bffabde1827bfd6d86b63163111d
tree8836fa69593da49e64e2e0862b9ba4cc69c70250
parentedc0596cc04bf0ac3a69c66e994d3ff8b650ff71
scsi: ufs: core: Do not exit ufshcd_reset_and_restore() unless operational or dead

Callers of ufshcd_reset_and_restore() expect it to return in an operational
state. However, the code only checks direct errors and so the ufshcd_state
may not be UFSHCD_STATE_OPERATIONAL due to error interrupts.

Fix by also checking ufshcd_state, still allowing non-fatal errors which
are left for the error handler to deal with.

Link: https://lore.kernel.org/r/20211002154550.128511-2-adrian.hunter@intel.com
Reviewed-by: Avri altman <avri.altman@wdc.com>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c