Commit 6dd74c51 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SCSI fixes from James Bottomley:
 "Four small fixes, three in drivers.

  The core fix adds a UFS device to an existing quirk to avoid a huge
  delay on boot"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()
  scsi: qla2xxx: Synchronize the IOCB count to be in order
  scsi: qla2xxx: Perform lockless command completion in abort path
  scsi: core: Add BLIST_SKIP_VPD_PAGES for SKhynix H28U74301AMR
parents 1e760fa3 a13faca0
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1145,10 +1145,12 @@ static int alua_activate(struct scsi_device *sdev,
	rcu_read_unlock();
	mutex_unlock(&h->init_mutex);

	if (alua_rtpg_queue(pg, sdev, qdata, true))
	if (alua_rtpg_queue(pg, sdev, qdata, true)) {
		fn = NULL;
	else
	} else {
		kfree(qdata);
		err = SCSI_DH_DEV_OFFLINED;
	}
	kref_put(&pg->kref, release_port_group);
out:
	if (fn)
+2 −1
Original line number Diff line number Diff line
@@ -1900,6 +1900,8 @@ qla2x00_get_sp_from_handle(scsi_qla_host_t *vha, const char *func,
	}

	req->outstanding_cmds[index] = NULL;

	qla_put_fw_resources(sp->qpair, &sp->iores);
	return sp;
}

@@ -3112,7 +3114,6 @@ qla25xx_process_bidir_status_iocb(scsi_qla_host_t *vha, void *pkt,
	}
	bsg_reply->reply_payload_rcv_len = 0;

	qla_put_fw_resources(sp->qpair, &sp->iores);
done:
	/* Return the vendor specific reply to API */
	bsg_reply->reply_data.vendor_reply.vendor_rsp[0] = rval;
+11 −0
Original line number Diff line number Diff line
@@ -1865,6 +1865,17 @@ __qla2x00_abort_all_cmds(struct qla_qpair *qp, int res)
	for (cnt = 1; cnt < req->num_outstanding_cmds; cnt++) {
		sp = req->outstanding_cmds[cnt];
		if (sp) {
			/*
			 * perform lockless completion during driver unload
			 */
			if (qla2x00_chip_is_down(vha)) {
				req->outstanding_cmds[cnt] = NULL;
				spin_unlock_irqrestore(qp->qp_lock_ptr, flags);
				sp->done(sp, res);
				spin_lock_irqsave(qp->qp_lock_ptr, flags);
				continue;
			}

			switch (sp->cmd_type) {
			case TYPE_SRB:
				qla2x00_abort_srb(qp, sp, res, &flags);
+1 −0
Original line number Diff line number Diff line
@@ -234,6 +234,7 @@ static struct {
	{"SGI", "RAID5", "*", BLIST_SPARSELUN},
	{"SGI", "TP9100", "*", BLIST_REPORTLUN2},
	{"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"SKhynix", "H28U74301AMR", NULL, BLIST_SKIP_VPD_PAGES},
	{"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"SUN", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
	{"DELL", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},