Commit 9599e9e7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SCSI fixes from James Bottomley:
 "Five small fixes, four in driver and one in the SCSI Parallel
  transport, which fixes an incredibly old bug so I suspect no-one has
  actually used the functionality it fixes"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: dh: Add Fujitsu device to devinfo and dh lists
  scsi: mpt3sas: Fix error returns in BRM_status_show
  scsi: mpt3sas: Fix unlock imbalance
  scsi: iscsi: Change iSCSI workqueue max_active back to 1
  scsi: scsi_transport_spi: Fix function pointer check
parents 0aea6d5c e094fd34
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2629,7 +2629,7 @@ struct Scsi_Host *iscsi_host_alloc(struct scsi_host_template *sht,
			"iscsi_q_%d", shost->host_no);
		ihost->workq = alloc_workqueue("%s",
			WQ_SYSFS | __WQ_LEGACY | WQ_MEM_RECLAIM | WQ_UNBOUND,
			2, ihost->workq_name);
			1, ihost->workq_name);
		if (!ihost->workq)
			goto free_host;
	}
+7 −5
Original line number Diff line number Diff line
@@ -3145,19 +3145,18 @@ BRM_status_show(struct device *cdev, struct device_attribute *attr,
	if (!ioc->is_warpdrive) {
		ioc_err(ioc, "%s: BRM attribute is only for warpdrive\n",
			__func__);
		goto out;
		return 0;
	}
	/* pci_access_mutex lock acquired by sysfs show path */
	mutex_lock(&ioc->pci_access_mutex);
	if (ioc->pci_error_recovery || ioc->remove_host) {
		mutex_unlock(&ioc->pci_access_mutex);
		return 0;
	}
	if (ioc->pci_error_recovery || ioc->remove_host)
		goto out;

	/* allocate upto GPIOVal 36 entries */
	sz = offsetof(Mpi2IOUnitPage3_t, GPIOVal) + (sizeof(u16) * 36);
	io_unit_pg3 = kzalloc(sz, GFP_KERNEL);
	if (!io_unit_pg3) {
		rc = -ENOMEM;
		ioc_err(ioc, "%s: failed allocating memory for iounit_pg3: (%d) bytes\n",
			__func__, sz);
		goto out;
@@ -3167,6 +3166,7 @@ BRM_status_show(struct device *cdev, struct device_attribute *attr,
	    0) {
		ioc_err(ioc, "%s: failed reading iounit_pg3\n",
			__func__);
		rc = -EINVAL;
		goto out;
	}

@@ -3174,12 +3174,14 @@ BRM_status_show(struct device *cdev, struct device_attribute *attr,
	if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
		ioc_err(ioc, "%s: iounit_pg3 failed with ioc_status(0x%04x)\n",
			__func__, ioc_status);
		rc = -EINVAL;
		goto out;
	}

	if (io_unit_pg3->GPIOCount < 25) {
		ioc_err(ioc, "%s: iounit_pg3->GPIOCount less than 25 entries, detected (%d) entries\n",
			__func__, io_unit_pg3->GPIOCount);
		rc = -EINVAL;
		goto out;
	}

+1 −0
Original line number Diff line number Diff line
@@ -239,6 +239,7 @@ static struct {
	{"LSI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"ENGENIO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"LENOVO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"FUJITSU", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"SanDisk", "Cruzer Blade", NULL, BLIST_TRY_VPD_PAGES |
		BLIST_INQUIRY_36},
	{"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36},
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ static const struct scsi_dh_blist scsi_dh_blist[] = {
	{"LSI", "INF-01-00",		"rdac", },
	{"ENGENIO", "INF-01-00",	"rdac", },
	{"LENOVO", "DE_Series",		"rdac", },
	{"FUJITSU", "ETERNUS_AHB",	"rdac", },
	{NULL, NULL,			NULL },
};

+1 −1
Original line number Diff line number Diff line
@@ -4760,7 +4760,7 @@ static __init int iscsi_transport_init(void)

	iscsi_eh_timer_workq = alloc_workqueue("%s",
			WQ_SYSFS | __WQ_LEGACY | WQ_MEM_RECLAIM | WQ_UNBOUND,
			2, "iscsi_eh");
			1, "iscsi_eh");
	if (!iscsi_eh_timer_workq) {
		err = -ENOMEM;
		goto release_nls;
Loading