diff options
Diffstat (limited to 'drivers/message')
-rw-r--r-- | drivers/message/fusion/mptscsih.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index 0e402eb95716..c29578614504 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c | |||
@@ -628,6 +628,16 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr) | |||
628 | return 1; | 628 | return 1; |
629 | } | 629 | } |
630 | 630 | ||
631 | if (ioc->bus_type == SAS) { | ||
632 | VirtDevice *vdevice = sc->device->hostdata; | ||
633 | |||
634 | if (!vdevice || !vdevice->vtarget || | ||
635 | vdevice->vtarget->deleted) { | ||
636 | sc->result = DID_NO_CONNECT << 16; | ||
637 | goto out; | ||
638 | } | ||
639 | } | ||
640 | |||
631 | sc->host_scribble = NULL; | 641 | sc->host_scribble = NULL; |
632 | sc->result = DID_OK << 16; /* Set default reply as OK */ | 642 | sc->result = DID_OK << 16; /* Set default reply as OK */ |
633 | pScsiReq = (SCSIIORequest_t *) mf; | 643 | pScsiReq = (SCSIIORequest_t *) mf; |
@@ -892,7 +902,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr) | |||
892 | #endif | 902 | #endif |
893 | 903 | ||
894 | } /* end of address reply case */ | 904 | } /* end of address reply case */ |
895 | 905 | out: | |
896 | /* Unmap the DMA buffers, if any. */ | 906 | /* Unmap the DMA buffers, if any. */ |
897 | scsi_dma_unmap(sc); | 907 | scsi_dma_unmap(sc); |
898 | 908 | ||