From: Kashyap, Desai Date: Tue, 14 Jun 2011 05:27:08 +0000 (+0530) Subject: mpt2sas: Added DID_NO_CONNECT return when driver remove and avoid shutdown call X-Git-Tag: v3.0.5~73 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db1f8f788b108fa627f011355ff9ba5e3e789fa6;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git mpt2sas: Added DID_NO_CONNECT return when driver remove and avoid shutdown call commit 7821578caa8cb831868989041112ab808029ca65 upstream. Driver should not call shutdown call from _scsih_remove otherwise, The scsi midlayer can be deadlocked when devices are removed from the driver pci_driver->shutdown handler. Signed-off-by: Kashyap Desai Signed-off-by: James Bottomley Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index e327a3c..8dc2ad4 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c @@ -3698,7 +3698,7 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *)) return 0; } - if (ioc->pci_error_recovery) { + if (ioc->pci_error_recovery || ioc->remove_host) { scmd->result = DID_NO_CONNECT << 16; scmd->scsi_done(scmd); return 0; @@ -7211,7 +7211,6 @@ _scsih_remove(struct pci_dev *pdev) } sas_remove_host(shost); - _scsih_shutdown(pdev); list_del(&ioc->list); scsi_remove_host(shost); scsi_host_put(shost);