Commit dbcec2e6 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull SCSI fixes from James Bottomley:
 "This is mostly a set of minor and obvious fixes (three in one of the
  new drivers).

  The only substantial change is to move the ufs to the blk-mq now that
  the merge window fixed the suspend/resume issues with blk-mq"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: qla2xxx: Initialize port speed to avoid setting lower speed
  Revert "scsi: ufs: Disable blk-mq for now"
  scsi: NCR5380: Return false instead of NULL
  scsi: qla2xxx: Fix a typo in MODULE_PARM_DESC
  scsi: hisi_sas: Remove set but not used variable 'dq_list'
  scsi: myrs: only build on little-endian platforms
  scsi: myrs: avoid stack overflow warning
  scsi: lpfc: fix remoteport access
  scsi: myrb: fix sprintf buffer overflow warning
  scsi: target/core: Avoid that a kernel oops is triggered when COMPARE AND WRITE fails
parents b7bbf993 f635e48e
...@@ -578,6 +578,7 @@ config SCSI_MYRB ...@@ -578,6 +578,7 @@ config SCSI_MYRB
config SCSI_MYRS config SCSI_MYRS
tristate "Mylex DAC960/DAC1100 PCI RAID Controller (SCSI Interface)" tristate "Mylex DAC960/DAC1100 PCI RAID Controller (SCSI Interface)"
depends on PCI depends on PCI
depends on !CPU_BIG_ENDIAN || COMPILE_TEST
select RAID_ATTRS select RAID_ATTRS
help help
This driver adds support for the Mylex DAC960, AcceleRAID, and This driver adds support for the Mylex DAC960, AcceleRAID, and
......
...@@ -1198,7 +1198,7 @@ static bool NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd) ...@@ -1198,7 +1198,7 @@ static bool NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
out: out:
if (!hostdata->selecting) if (!hostdata->selecting)
return NULL; return false;
hostdata->selecting = NULL; hostdata->selecting = NULL;
return ret; return ret;
} }
......
...@@ -904,11 +904,9 @@ static void start_delivery_v1_hw(struct hisi_sas_dq *dq) ...@@ -904,11 +904,9 @@ static void start_delivery_v1_hw(struct hisi_sas_dq *dq)
{ {
struct hisi_hba *hisi_hba = dq->hisi_hba; struct hisi_hba *hisi_hba = dq->hisi_hba;
struct hisi_sas_slot *s, *s1, *s2 = NULL; struct hisi_sas_slot *s, *s1, *s2 = NULL;
struct list_head *dq_list;
int dlvry_queue = dq->id; int dlvry_queue = dq->id;
int wp; int wp;
dq_list = &dq->list;
list_for_each_entry_safe(s, s1, &dq->list, delivery) { list_for_each_entry_safe(s, s1, &dq->list, delivery) {
if (!s->ready) if (!s->ready)
break; break;
......
...@@ -1670,11 +1670,9 @@ static void start_delivery_v2_hw(struct hisi_sas_dq *dq) ...@@ -1670,11 +1670,9 @@ static void start_delivery_v2_hw(struct hisi_sas_dq *dq)
{ {
struct hisi_hba *hisi_hba = dq->hisi_hba; struct hisi_hba *hisi_hba = dq->hisi_hba;
struct hisi_sas_slot *s, *s1, *s2 = NULL; struct hisi_sas_slot *s, *s1, *s2 = NULL;
struct list_head *dq_list;
int dlvry_queue = dq->id; int dlvry_queue = dq->id;
int wp; int wp;
dq_list = &dq->list;
list_for_each_entry_safe(s, s1, &dq->list, delivery) { list_for_each_entry_safe(s, s1, &dq->list, delivery) {
if (!s->ready) if (!s->ready)
break; break;
......
...@@ -886,11 +886,9 @@ static void start_delivery_v3_hw(struct hisi_sas_dq *dq) ...@@ -886,11 +886,9 @@ static void start_delivery_v3_hw(struct hisi_sas_dq *dq)
{ {
struct hisi_hba *hisi_hba = dq->hisi_hba; struct hisi_hba *hisi_hba = dq->hisi_hba;
struct hisi_sas_slot *s, *s1, *s2 = NULL; struct hisi_sas_slot *s, *s1, *s2 = NULL;
struct list_head *dq_list;
int dlvry_queue = dq->id; int dlvry_queue = dq->id;
int wp; int wp;
dq_list = &dq->list;
list_for_each_entry_safe(s, s1, &dq->list, delivery) { list_for_each_entry_safe(s, s1, &dq->list, delivery) {
if (!s->ready) if (!s->ready)
break; break;
......
...@@ -698,6 +698,8 @@ lpfc_debugfs_nodelist_data(struct lpfc_vport *vport, char *buf, int size) ...@@ -698,6 +698,8 @@ lpfc_debugfs_nodelist_data(struct lpfc_vport *vport, char *buf, int size)
rport = lpfc_ndlp_get_nrport(ndlp); rport = lpfc_ndlp_get_nrport(ndlp);
if (rport) if (rport)
nrport = rport->remoteport; nrport = rport->remoteport;
else
nrport = NULL;
spin_unlock(&phba->hbalock); spin_unlock(&phba->hbalock);
if (!nrport) if (!nrport)
continue; continue;
......
...@@ -1049,7 +1049,8 @@ static int myrb_get_hba_config(struct myrb_hba *cb) ...@@ -1049,7 +1049,8 @@ static int myrb_get_hba_config(struct myrb_hba *cb)
enquiry2->fw.firmware_type = '0'; enquiry2->fw.firmware_type = '0';
enquiry2->fw.turn_id = 0; enquiry2->fw.turn_id = 0;
} }
sprintf(cb->fw_version, "%d.%02d-%c-%02d", snprintf(cb->fw_version, sizeof(cb->fw_version),
"%d.%02d-%c-%02d",
enquiry2->fw.major_version, enquiry2->fw.major_version,
enquiry2->fw.minor_version, enquiry2->fw.minor_version,
enquiry2->fw.firmware_type, enquiry2->fw.firmware_type,
......
...@@ -163,9 +163,12 @@ static unsigned char myrs_get_ctlr_info(struct myrs_hba *cs) ...@@ -163,9 +163,12 @@ static unsigned char myrs_get_ctlr_info(struct myrs_hba *cs)
dma_addr_t ctlr_info_addr; dma_addr_t ctlr_info_addr;
union myrs_sgl *sgl; union myrs_sgl *sgl;
unsigned char status; unsigned char status;
struct myrs_ctlr_info old; unsigned short ldev_present, ldev_critical, ldev_offline;
ldev_present = cs->ctlr_info->ldev_present;
ldev_critical = cs->ctlr_info->ldev_critical;
ldev_offline = cs->ctlr_info->ldev_offline;
memcpy(&old, cs->ctlr_info, sizeof(struct myrs_ctlr_info));
ctlr_info_addr = dma_map_single(&cs->pdev->dev, cs->ctlr_info, ctlr_info_addr = dma_map_single(&cs->pdev->dev, cs->ctlr_info,
sizeof(struct myrs_ctlr_info), sizeof(struct myrs_ctlr_info),
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
...@@ -198,9 +201,9 @@ static unsigned char myrs_get_ctlr_info(struct myrs_hba *cs) ...@@ -198,9 +201,9 @@ static unsigned char myrs_get_ctlr_info(struct myrs_hba *cs)
cs->ctlr_info->rbld_active + cs->ctlr_info->rbld_active +
cs->ctlr_info->exp_active != 0) cs->ctlr_info->exp_active != 0)
cs->needs_update = true; cs->needs_update = true;
if (cs->ctlr_info->ldev_present != old.ldev_present || if (cs->ctlr_info->ldev_present != ldev_present ||
cs->ctlr_info->ldev_critical != old.ldev_critical || cs->ctlr_info->ldev_critical != ldev_critical ||
cs->ctlr_info->ldev_offline != old.ldev_offline) cs->ctlr_info->ldev_offline != ldev_offline)
shost_printk(KERN_INFO, cs->host, shost_printk(KERN_INFO, cs->host,
"Logical drive count changes (%d/%d/%d)\n", "Logical drive count changes (%d/%d/%d)\n",
cs->ctlr_info->ldev_critical, cs->ctlr_info->ldev_critical,
......
...@@ -4763,6 +4763,7 @@ qla2x00_alloc_fcport(scsi_qla_host_t *vha, gfp_t flags) ...@@ -4763,6 +4763,7 @@ qla2x00_alloc_fcport(scsi_qla_host_t *vha, gfp_t flags)
fcport->loop_id = FC_NO_LOOP_ID; fcport->loop_id = FC_NO_LOOP_ID;
qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED); qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED);
fcport->supported_classes = FC_COS_UNSPECIFIED; fcport->supported_classes = FC_COS_UNSPECIFIED;
fcport->fp_speed = PORT_SPEED_UNKNOWN;
fcport->ct_desc.ct_sns = dma_alloc_coherent(&vha->hw->pdev->dev, fcport->ct_desc.ct_sns = dma_alloc_coherent(&vha->hw->pdev->dev,
sizeof(struct ct_sns_pkt), &fcport->ct_desc.ct_sns_dma, sizeof(struct ct_sns_pkt), &fcport->ct_desc.ct_sns_dma,
......
...@@ -67,7 +67,7 @@ module_param(ql2xplogiabsentdevice, int, S_IRUGO|S_IWUSR); ...@@ -67,7 +67,7 @@ module_param(ql2xplogiabsentdevice, int, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC(ql2xplogiabsentdevice, MODULE_PARM_DESC(ql2xplogiabsentdevice,
"Option to enable PLOGI to devices that are not present after " "Option to enable PLOGI to devices that are not present after "
"a Fabric scan. This is needed for several broken switches. " "a Fabric scan. This is needed for several broken switches. "
"Default is 0 - no PLOGI. 1 - perfom PLOGI."); "Default is 0 - no PLOGI. 1 - perform PLOGI.");
int ql2xloginretrycount = 0; int ql2xloginretrycount = 0;
module_param(ql2xloginretrycount, int, S_IRUGO); module_param(ql2xloginretrycount, int, S_IRUGO);
......
...@@ -8099,13 +8099,6 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle) ...@@ -8099,13 +8099,6 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle)
err = -ENOMEM; err = -ENOMEM;
goto out_error; goto out_error;
} }
/*
* Do not use blk-mq at this time because blk-mq does not support
* runtime pm.
*/
host->use_blk_mq = false;
hba = shost_priv(host); hba = shost_priv(host);
hba->host = host; hba->host = host;
hba->dev = dev; hba->dev = dev;
......
...@@ -1778,7 +1778,7 @@ EXPORT_SYMBOL(target_submit_tmr); ...@@ -1778,7 +1778,7 @@ EXPORT_SYMBOL(target_submit_tmr);
void transport_generic_request_failure(struct se_cmd *cmd, void transport_generic_request_failure(struct se_cmd *cmd,
sense_reason_t sense_reason) sense_reason_t sense_reason)
{ {
int ret = 0; int ret = 0, post_ret;
pr_debug("-----[ Storage Engine Exception; sense_reason %d\n", pr_debug("-----[ Storage Engine Exception; sense_reason %d\n",
sense_reason); sense_reason);
...@@ -1790,7 +1790,7 @@ void transport_generic_request_failure(struct se_cmd *cmd, ...@@ -1790,7 +1790,7 @@ void transport_generic_request_failure(struct se_cmd *cmd,
transport_complete_task_attr(cmd); transport_complete_task_attr(cmd);
if (cmd->transport_complete_callback) if (cmd->transport_complete_callback)
cmd->transport_complete_callback(cmd, false, NULL); cmd->transport_complete_callback(cmd, false, &post_ret);
if (transport_check_aborted_status(cmd, 1)) if (transport_check_aborted_status(cmd, 1))
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment