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

Commit 2551a13e authored by Jeff Garzik's avatar Jeff Garzik Committed by James Bottomley
Browse files

[SCSI] ips: handle scsi_add_host() failure, and other err cleanups

parent 21e1a5f2
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -6837,13 +6837,10 @@ ips_register_scsi(int index)
	if (request_irq(ha->pcidev->irq, do_ipsintr, IRQF_SHARED, ips_name, ha)) {
		IPS_PRINTK(KERN_WARNING, ha->pcidev,
			   "Unable to install interrupt handler\n");
		scsi_host_put(sh);
		return -1;
		goto err_out_sh;
	}

	kfree(oldha);
	ips_sh[index] = sh;
	ips_ha[index] = ha;

	/* Store away needed values for later use */
	sh->unique_id = (ha->io_addr) ? ha->io_addr : ha->mem_addr;
@@ -6859,10 +6856,21 @@ ips_register_scsi(int index)
	sh->max_channel = ha->nbus - 1;
	sh->can_queue = ha->max_cmds - 1;

	scsi_add_host(sh, NULL);
	if (scsi_add_host(sh, &ha->pcidev->dev))
		goto err_out;

	ips_sh[index] = sh;
	ips_ha[index] = ha;

	scsi_scan_host(sh);

	return 0;

err_out:
	free_irq(ha->pcidev->irq, ha);
err_out_sh:
	scsi_host_put(sh);
	return -1;
}

/*---------------------------------------------------------------------------*/