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

Commit ddff7ed4 authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by Martin K. Petersen
Browse files

scsi: qla2xxx: don't disable a not previously enabled PCI device



When pci_enable_device() or pci_enable_device_mem() fail in
qla2x00_probe_one() we bail out but do a call to
pci_disable_device(). This causes the dev_WARN_ON() in
pci_disable_device() to trigger, as the device wasn't enabled
previously.

So instead of taking the 'probe_out' error path we can directly return
*iff* one of the pci_enable_device() calls fails.

Additionally rename the 'probe_out' goto label's name to the more
descriptive 'disable_device'.

Signed-off-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Fixes: e315cd28 ("[SCSI] qla2xxx: Code changes for qla data structure refactoring")
Cc: <stable@vger.kernel.org>
Reviewed-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: default avatarGiridhar Malavali <giridhar.malavali@cavium.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 75b61250
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2623,10 +2623,10 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)

	if (mem_only) {
		if (pci_enable_device_mem(pdev))
			goto probe_out;
			return ret;
	} else {
		if (pci_enable_device(pdev))
			goto probe_out;
			return ret;
	}

	/* This may fail but that's ok */
@@ -2636,7 +2636,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
	if (!ha) {
		ql_log_pci(ql_log_fatal, pdev, 0x0009,
		    "Unable to allocate memory for ha.\n");
		goto probe_out;
		goto disable_device;
	}
	ql_dbg_pci(ql_dbg_init, pdev, 0x000a,
	    "Memory allocated for ha=%p.\n", ha);
@@ -3254,7 +3254,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
	pci_release_selected_regions(ha->pdev, ha->bars);
	kfree(ha);

probe_out:
disable_device:
	pci_disable_device(pdev);
	return ret;
}