Browse Source

[SCSI] mptfusion: Proper bus_type check is added

Added proper bus_type check before processing event/ reset handler.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Kashyap, Desai 15 years ago
parent
commit
ffb7fef32b

+ 4 - 1
drivers/message/fusion/mptfc.c

@@ -1358,6 +1358,9 @@ mptfc_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
 	unsigned long flags;
 	unsigned long flags;
 	int rc=1;
 	int rc=1;
 
 
+	if (ioc->bus_type != FC)
+		return 0;
+
 	devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT "MPT event (=%02Xh) routed to SCSI host driver!\n",
 	devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT "MPT event (=%02Xh) routed to SCSI host driver!\n",
 			ioc->name, event));
 			ioc->name, event));
 
 
@@ -1396,7 +1399,7 @@ mptfc_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
 	unsigned long	flags;
 	unsigned long	flags;
 
 
 	rc = mptscsih_ioc_reset(ioc,reset_phase);
 	rc = mptscsih_ioc_reset(ioc,reset_phase);
-	if (rc == 0)
+	if ((ioc->bus_type != FC) || (!rc))
 		return rc;
 		return rc;
 
 
 
 

+ 3 - 0
drivers/message/fusion/mptsas.c

@@ -4779,6 +4779,9 @@ mptsas_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *reply)
 	struct fw_event_work *fw_event;
 	struct fw_event_work *fw_event;
 	unsigned long delay;
 	unsigned long delay;
 
 
+	if (ioc->bus_type != SAS)
+		return 0;
+
 	/* events turned off due to host reset or driver unloading */
 	/* events turned off due to host reset or driver unloading */
 	if (ioc->fw_events_off)
 	if (ioc->fw_events_off)
 		return 0;
 		return 0;

+ 5 - 0
drivers/message/fusion/mptspi.c

@@ -1152,6 +1152,9 @@ mptspi_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply)
 	u8 event = le32_to_cpu(pEvReply->Event) & 0xFF;
 	u8 event = le32_to_cpu(pEvReply->Event) & 0xFF;
 	struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
 	struct _MPT_SCSI_HOST *hd = shost_priv(ioc->sh);
 
 
+	if (ioc->bus_type != SPI)
+		return 0;
+
 	if (hd && event ==  MPI_EVENT_INTEGRATED_RAID) {
 	if (hd && event ==  MPI_EVENT_INTEGRATED_RAID) {
 		int reason
 		int reason
 			= (le32_to_cpu(pEvReply->Data[0]) & 0x00FF0000) >> 16;
 			= (le32_to_cpu(pEvReply->Data[0]) & 0x00FF0000) >> 16;
@@ -1283,6 +1286,8 @@ mptspi_ioc_reset(MPT_ADAPTER *ioc, int reset_phase)
 	int rc;
 	int rc;
 
 
 	rc = mptscsih_ioc_reset(ioc, reset_phase);
 	rc = mptscsih_ioc_reset(ioc, reset_phase);
+	if ((ioc->bus_type != SPI) || (!rc))
+		return rc;
 
 
 	/* only try to do a renegotiation if we're properly set up
 	/* only try to do a renegotiation if we're properly set up
 	 * if we get an ioc fault on bringup, ioc->sh will be NULL */
 	 * if we get an ioc fault on bringup, ioc->sh will be NULL */