diff options
Diffstat (limited to 'drivers/scsi/scsi_error.c')
-rw-r--r-- | drivers/scsi/scsi_error.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index de2337f255a7..c1b05a83d403 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -789,7 +789,6 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd, | |||
789 | int cmnd_size, int timeout, unsigned sense_bytes) | 789 | int cmnd_size, int timeout, unsigned sense_bytes) |
790 | { | 790 | { |
791 | struct scsi_device *sdev = scmd->device; | 791 | struct scsi_device *sdev = scmd->device; |
792 | struct scsi_driver *sdrv = scsi_cmd_to_driver(scmd); | ||
793 | struct Scsi_Host *shost = sdev->host; | 792 | struct Scsi_Host *shost = sdev->host; |
794 | DECLARE_COMPLETION_ONSTACK(done); | 793 | DECLARE_COMPLETION_ONSTACK(done); |
795 | unsigned long timeleft; | 794 | unsigned long timeleft; |
@@ -845,8 +844,11 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd, | |||
845 | 844 | ||
846 | scsi_eh_restore_cmnd(scmd, &ses); | 845 | scsi_eh_restore_cmnd(scmd, &ses); |
847 | 846 | ||
848 | if (sdrv && sdrv->eh_action) | 847 | if (scmd->request->cmd_type != REQ_TYPE_BLOCK_PC) { |
849 | rtn = sdrv->eh_action(scmd, cmnd, cmnd_size, rtn); | 848 | struct scsi_driver *sdrv = scsi_cmd_to_driver(scmd); |
849 | if (sdrv->eh_action) | ||
850 | rtn = sdrv->eh_action(scmd, cmnd, cmnd_size, rtn); | ||
851 | } | ||
850 | 852 | ||
851 | return rtn; | 853 | return rtn; |
852 | } | 854 | } |