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

Commit 0d0f3ef2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
  [SCSI] qlogicpti: fix sg list traversal error in continuation entries
  [SCSI] Fix hang with split requests
  [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP initialization completes.
parents 17c0d2a1 c9eeb248
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -1834,7 +1834,6 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
		WRT_REG_WORD(&reg->isp.hccr, HCCR_CLR_HOST_INT);
		WRT_REG_WORD(&reg->isp.hccr, HCCR_CLR_HOST_INT);
	}
	}
	spin_unlock_irq(&ha->hardware_lock);
	spin_unlock_irq(&ha->hardware_lock);
	ha->isp_ops->enable_intrs(ha);


fail:
fail:
	return ret;
	return ret;
+2 −0
Original line number Original line Diff line number Diff line
@@ -1740,6 +1740,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
	if (ret)
	if (ret)
		goto probe_failed;
		goto probe_failed;


	ha->isp_ops->enable_intrs(ha);

	scsi_scan_host(host);
	scsi_scan_host(host);


	qla2x00_alloc_sysfs_attr(ha);
	qla2x00_alloc_sysfs_attr(ha);
+2 −1
Original line number Original line Diff line number Diff line
@@ -852,7 +852,7 @@ static void scsi_end_bidi_request(struct scsi_cmnd *cmd)
void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
{
{
	int result = cmd->result;
	int result = cmd->result;
	int this_count = scsi_bufflen(cmd);
	int this_count;
	struct request_queue *q = cmd->device->request_queue;
	struct request_queue *q = cmd->device->request_queue;
	struct request *req = cmd->request;
	struct request *req = cmd->request;
	int error = 0;
	int error = 0;
@@ -908,6 +908,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
	 */
	 */
	if (scsi_end_request(cmd, error, good_bytes, result == 0) == NULL)
	if (scsi_end_request(cmd, error, good_bytes, result == 0) == NULL)
		return;
		return;
	this_count = blk_rq_bytes(req);


	/* good_bytes = 0, or (inclusive) there were leftovers and
	/* good_bytes = 0, or (inclusive) there were leftovers and
	 * result = 0, so scsi_end_request couldn't retry.
	 * result = 0, so scsi_end_request couldn't retry.