forked from luck/tmp_suning_uos_patched
SCSI fixes on 20200711
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. Signed-off-by: James E.J. Bottomley <jejb@linux.ibm.com> -----BEGIN PGP SIGNATURE----- iJwEABMIAEQWIQTnYEDbdso9F2cI+arnQslM7pishQUCXwoFlCYcamFtZXMuYm90 dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbQAKCRDnQslM7pishea+AP9aL/33 vU70iMn0uHRmP45e2E+WwIItcMukkBDHQnrr2QD+JIOS5qk4esGn7+a5HIJ82+Y/ aOzi/jfnquCYDee0zps= =QkX9 -----END PGP SIGNATURE----- Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi 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
This commit is contained in:
commit
9599e9e7e3
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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},
|
||||
|
|
|
@ -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 },
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -339,7 +339,7 @@ store_spi_transport_##field(struct device *dev, \
|
|||
struct spi_transport_attrs *tp \
|
||||
= (struct spi_transport_attrs *)&starget->starget_data; \
|
||||
\
|
||||
if (i->f->set_##field) \
|
||||
if (!i->f->set_##field) \
|
||||
return -EINVAL; \
|
||||
val = simple_strtoul(buf, NULL, 0); \
|
||||
if (val > tp->max_##field) \
|
||||
|
|
Loading…
Reference in New Issue
Block a user