|
@@ -3186,16 +3186,19 @@ static u8
|
|
_scsih_sas_control_complete(struct MPT2SAS_ADAPTER *ioc, u16 smid,
|
|
_scsih_sas_control_complete(struct MPT2SAS_ADAPTER *ioc, u16 smid,
|
|
u8 msix_index, u32 reply)
|
|
u8 msix_index, u32 reply)
|
|
{
|
|
{
|
|
-#ifdef CONFIG_SCSI_MPT2SAS_LOGGING
|
|
|
|
Mpi2SasIoUnitControlReply_t *mpi_reply =
|
|
Mpi2SasIoUnitControlReply_t *mpi_reply =
|
|
mpt2sas_base_get_reply_virt_addr(ioc, reply);
|
|
mpt2sas_base_get_reply_virt_addr(ioc, reply);
|
|
-#endif
|
|
|
|
- dewtprintk(ioc, printk(MPT2SAS_INFO_FMT
|
|
|
|
- "sc_complete:handle(0x%04x), (open) "
|
|
|
|
- "smid(%d), ioc_status(0x%04x), loginfo(0x%08x)\n",
|
|
|
|
- ioc->name, le16_to_cpu(mpi_reply->DevHandle), smid,
|
|
|
|
- le16_to_cpu(mpi_reply->IOCStatus),
|
|
|
|
- le32_to_cpu(mpi_reply->IOCLogInfo)));
|
|
|
|
|
|
+ if (likely(mpi_reply)) {
|
|
|
|
+ dewtprintk(ioc, printk(MPT2SAS_INFO_FMT
|
|
|
|
+ "sc_complete:handle(0x%04x), (open) "
|
|
|
|
+ "smid(%d), ioc_status(0x%04x), loginfo(0x%08x)\n",
|
|
|
|
+ ioc->name, le16_to_cpu(mpi_reply->DevHandle), smid,
|
|
|
|
+ le16_to_cpu(mpi_reply->IOCStatus),
|
|
|
|
+ le32_to_cpu(mpi_reply->IOCLogInfo)));
|
|
|
|
+ } else {
|
|
|
|
+ printk(MPT2SAS_ERR_FMT "mpi_reply not valid at %s:%d/%s()!\n",
|
|
|
|
+ ioc->name, __FILE__, __LINE__, __func__);
|
|
|
|
+ }
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3274,7 +3277,11 @@ _scsih_tm_volume_tr_complete(struct MPT2SAS_ADAPTER *ioc, u16 smid,
|
|
"progress!\n", __func__, ioc->name));
|
|
"progress!\n", __func__, ioc->name));
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ if (unlikely(!mpi_reply)) {
|
|
|
|
+ printk(MPT2SAS_ERR_FMT "mpi_reply not valid at %s:%d/%s()!\n",
|
|
|
|
+ ioc->name, __FILE__, __LINE__, __func__);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
mpi_request_tm = mpt2sas_base_get_msg_frame(ioc, smid);
|
|
mpi_request_tm = mpt2sas_base_get_msg_frame(ioc, smid);
|
|
handle = le16_to_cpu(mpi_request_tm->DevHandle);
|
|
handle = le16_to_cpu(mpi_request_tm->DevHandle);
|
|
if (handle != le16_to_cpu(mpi_reply->DevHandle)) {
|
|
if (handle != le16_to_cpu(mpi_reply->DevHandle)) {
|
|
@@ -3337,7 +3344,11 @@ _scsih_tm_tr_complete(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
|
"operational\n", __func__, ioc->name));
|
|
"operational\n", __func__, ioc->name));
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ if (unlikely(!mpi_reply)) {
|
|
|
|
+ printk(MPT2SAS_ERR_FMT "mpi_reply not valid at %s:%d/%s()!\n",
|
|
|
|
+ ioc->name, __FILE__, __LINE__, __func__);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
mpi_request_tm = mpt2sas_base_get_msg_frame(ioc, smid);
|
|
mpi_request_tm = mpt2sas_base_get_msg_frame(ioc, smid);
|
|
handle = le16_to_cpu(mpi_request_tm->DevHandle);
|
|
handle = le16_to_cpu(mpi_request_tm->DevHandle);
|
|
if (handle != le16_to_cpu(mpi_reply->DevHandle)) {
|
|
if (handle != le16_to_cpu(mpi_reply->DevHandle)) {
|
|
@@ -7353,6 +7364,13 @@ mpt2sas_scsih_event_callback(struct MPT2SAS_ADAPTER *ioc, u8 msix_index,
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply);
|
|
mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply);
|
|
|
|
+
|
|
|
|
+ if (unlikely(!mpi_reply)) {
|
|
|
|
+ printk(MPT2SAS_ERR_FMT "mpi_reply not valid at %s:%d/%s()!\n",
|
|
|
|
+ ioc->name, __FILE__, __LINE__, __func__);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
event = le16_to_cpu(mpi_reply->Event);
|
|
event = le16_to_cpu(mpi_reply->Event);
|
|
|
|
|
|
switch (event) {
|
|
switch (event) {
|