There is a code path in the SCSI async abort handling that can cause error handling of subsequent scsi_cmnds to proceed immediately to host reset with no other attempt at recovery. This can be seen by the following: modprobe scsi_debug every_nth=10 opts=4 echo 7 > /sys/module/scsi_mod/parameters/scsi_logging_level echo 10 > /sys/devices/pseudo_0/adapter0/host8/scsi_host/host<N>/eh_deadline and performing I/O to the scsi_debug device, the host will get reset immediately when prior aborts succeeded, because ->last_reset does not get invalidated. The patch series contains a fix, followed by a simplification of the control flow to remove duplicate code. Only the first patch is Cc: stable as the second part doesn't qualify. Yes, I know the first patch is >100 lines, I couldn't make it smaller unfortunately. Signed-off-by: Ewan D. Milne <emilne@xxxxxxxxxx> Ewan D. Milne (2): scsi: core: avoid leaving shost->last_reset with stale value if EH does not run scsi: core: simplify control flow in scmd_eh_abort_handler drivers/scsi/hosts.c | 1 + drivers/scsi/scsi_error.c | 92 ++++++++++++++++++++++++++++++----------------- drivers/scsi/scsi_lib.c | 1 + include/scsi/scsi_cmnd.h | 2 +- include/scsi/scsi_host.h | 1 + 5 files changed, 63 insertions(+), 34 deletions(-) -- 2.1.0