Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"This is a set of four essential fixes: two oops related (bnx2i,
virtio-scsi), one data corruption related (hpsa) and one failure to
boot due to interrupt routing issues (mpt2ss).

Signed-off-by: James Bottomley <JBottomley@Parallels.com>"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
[SCSI] hpsa: fix handling of protocol error
[SCSI] mpt2sas: Fix for issue - Unable to boot from the drive connected to HBA
[SCSI] bnx2i: Fixed NULL ptr deference for 1G bnx2 Linux iSCSI offload
[SCSI] scsi: virtio-scsi: Fix address translation failure of HighMem pages used by sg list

Changed files
+13 -2
drivers
+3
drivers/scsi/bnx2i/bnx2i_hwi.c
··· 1264 1264 int rc = 0; 1265 1265 u64 mask64; 1266 1266 1267 + memset(&iscsi_init, 0x00, sizeof(struct iscsi_kwqe_init1)); 1268 + memset(&iscsi_init2, 0x00, sizeof(struct iscsi_kwqe_init2)); 1269 + 1267 1270 bnx2i_adjust_qp_size(hba); 1268 1271 1269 1272 iscsi_init.flags =
+2 -1
drivers/scsi/hpsa.c
··· 1315 1315 } 1316 1316 break; 1317 1317 case CMD_PROTOCOL_ERR: 1318 + cmd->result = DID_ERROR << 16; 1318 1319 dev_warn(&h->pdev->dev, "cp %p has " 1319 - "protocol error \n", cp); 1320 + "protocol error\n", cp); 1320 1321 break; 1321 1322 case CMD_HARDWARE_ERR: 1322 1323 cmd->result = DID_ERROR << 16;
+7
drivers/scsi/mpt2sas/mpt2sas_base.c
··· 1209 1209 u16 message_control; 1210 1210 1211 1211 1212 + /* Check whether controller SAS2008 B0 controller, 1213 + if it is SAS2008 B0 controller use IO-APIC instead of MSIX */ 1214 + if (ioc->pdev->device == MPI2_MFGPAGE_DEVID_SAS2008 && 1215 + ioc->pdev->revision == 0x01) { 1216 + return -EINVAL; 1217 + } 1218 + 1212 1219 base = pci_find_capability(ioc->pdev, PCI_CAP_ID_MSIX); 1213 1220 if (!base) { 1214 1221 dfailprintk(ioc, printk(MPT2SAS_INFO_FMT "msix not "
+1 -1
drivers/scsi/virtio_scsi.c
··· 331 331 int i; 332 332 333 333 for_each_sg(table->sgl, sg_elem, table->nents, i) 334 - sg_set_buf(&sg[idx++], sg_virt(sg_elem), sg_elem->length); 334 + sg[idx++] = *sg_elem; 335 335 336 336 *p_idx = idx; 337 337 }