[PATCH v3 23/23] ncr5380: Call complete_cmd() for disconnected commands on bus reset

Finn Thain
2016-03-21T04:05:37Z

[-- Attachment #1: ncr5380-disconnected-autosense-fix --]
[-- Type: text/plain, Size: 1077 bytes --]

I'm told that some targets are liable to disconnect a REQUEST SENSE
command. Theoretically this would cause a command undergoing autosense to
be moved onto the disconnected list. The bus reset handler must call
complete_cmd() for these commands, otherwise the hostdata->sensing pointer
will not get cleared. That would cause autosense processing to stall and
a timeout or an incorrect scsi_eh_restore_cmnd() would eventually follow.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>

---
drivers/scsi/NCR5380.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux/drivers/scsi/NCR5380.c
===================================================================
--- linux.orig/drivers/scsi/NCR5380.c 2016-03-21 13:31:40.000000000 +1100
+++ linux/drivers/scsi/NCR5380.c 2016-03-21 13:31:47.000000000 +1100
@@ -2437,7 +2437,7 @@ static int NCR5380_bus_reset(struct scsi
struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);

set_host_byte(cmd, DID_RESET);
- cmd->scsi_done(cmd);
+ complete_cmd(instance, cmd);
}
INIT_LIST_HEAD(&hostdata->disconnected);