Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf00c55e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SCSI fixes from James Bottomley:
 "This is a set of minor qla and virto fixes plus one major regression
  fix (oops in all legacy host drivers)."

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  [SCSI] virtio_scsi: fix TMF use-after-free
  [SCSI] fix oops in all legacy host adapters caused by 6f381fa3
  [SCSI] qla2xxx: Update version number to 8.04.00.03-k.
  [SCSI] qla2xxx: Properly check for current state after the fabric-login request.
  [SCSI] qla2xxx: Proper completion to scsi-ml for scsi status task_set_full and busy.
  [SCSI] qla2xxx: Block flash access from application when device is initialized for ISP82xx.
  [SCSI] qla2xxx: Fix reset time out as qla2xxx not ack to reset request.
parents 4a873f53 e4594bb5
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -218,6 +218,9 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, struct device *dev,


	if (!shost->shost_gendev.parent)
	if (!shost->shost_gendev.parent)
		shost->shost_gendev.parent = dev ? dev : &platform_bus;
		shost->shost_gendev.parent = dev ? dev : &platform_bus;
	if (!dma_dev)
		dma_dev = shost->shost_gendev.parent;

	shost->dma_dev = dma_dev;
	shost->dma_dev = dma_dev;


	error = device_add(&shost->shost_gendev);
	error = device_add(&shost->shost_gendev);
+3 −0
Original line number Original line Diff line number Diff line
@@ -1367,6 +1367,9 @@ qla2x00_read_optrom(struct fc_bsg_job *bsg_job)
	struct qla_hw_data *ha = vha->hw;
	struct qla_hw_data *ha = vha->hw;
	int rval = 0;
	int rval = 0;


	if (ha->flags.isp82xx_reset_hdlr_active)
		return -EBUSY;

	rval = qla2x00_optrom_setup(bsg_job, vha, 0);
	rval = qla2x00_optrom_setup(bsg_job, vha, 0);
	if (rval)
	if (rval)
		return rval;
		return rval;
+1 −1
Original line number Original line Diff line number Diff line
@@ -15,7 +15,7 @@
 * | Mailbox commands             |       0x113e       | 0x112c-0x112e  |
 * | Mailbox commands             |       0x113e       | 0x112c-0x112e  |
 * |                              |                    | 0x113a         |
 * |                              |                    | 0x113a         |
 * | Device Discovery             |       0x2086       | 0x2020-0x2022  |
 * | Device Discovery             |       0x2086       | 0x2020-0x2022  |
 * | Queue Command and IO tracing |       0x302f       | 0x3006,0x3008  |
 * | Queue Command and IO tracing |       0x3030       | 0x3006,0x3008  |
 * |                              |                    | 0x302d-0x302e  |
 * |                              |                    | 0x302d-0x302e  |
 * | DPC Thread                   |       0x401c       |		|
 * | DPC Thread                   |       0x401c       |		|
 * | Async Events                 |       0x505d       | 0x502b-0x502f  |
 * | Async Events                 |       0x505d       | 0x502b-0x502f  |
+13 −2
Original line number Original line Diff line number Diff line
@@ -1715,13 +1715,24 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
				res = DID_ERROR << 16;
				res = DID_ERROR << 16;
				break;
				break;
			}
			}
		} else {
		} else if (lscsi_status != SAM_STAT_TASK_SET_FULL &&
			    lscsi_status != SAM_STAT_BUSY) {
			/*
			 * scsi status of task set and busy are considered to be
			 * task not completed.
			 */

			ql_dbg(ql_dbg_io, fcport->vha, 0x301f,
			ql_dbg(ql_dbg_io, fcport->vha, 0x301f,
			    "Dropped frame(s) detected (0x%x "
			    "Dropped frame(s) detected (0x%x "
			    "of 0x%x bytes).\n", resid, scsi_bufflen(cp));
			    "of 0x%x bytes).\n", resid,
			    scsi_bufflen(cp));


			res = DID_ERROR << 16 | lscsi_status;
			res = DID_ERROR << 16 | lscsi_status;
			goto check_scsi_status;
			goto check_scsi_status;
		} else {
			ql_dbg(ql_dbg_io, fcport->vha, 0x3030,
			    "scsi_status: 0x%x, lscsi_status: 0x%x\n",
			    scsi_status, lscsi_status);
		}
		}


		res = DID_OK << 16 | lscsi_status;
		res = DID_OK << 16 | lscsi_status;
+1 −0
Original line number Original line Diff line number Diff line
@@ -3125,6 +3125,7 @@ qla82xx_need_reset_handler(scsi_qla_host_t *vha)
		ql_log(ql_log_info, vha, 0x00b7,
		ql_log(ql_log_info, vha, 0x00b7,
		    "HW State: COLD/RE-INIT.\n");
		    "HW State: COLD/RE-INIT.\n");
		qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, QLA82XX_DEV_COLD);
		qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, QLA82XX_DEV_COLD);
		qla82xx_set_rst_ready(ha);
		if (ql2xmdenable) {
		if (ql2xmdenable) {
			if (qla82xx_md_collect(vha))
			if (qla82xx_md_collect(vha))
				ql_log(ql_log_warn, vha, 0xb02c,
				ql_log(ql_log_warn, vha, 0xb02c,
Loading