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

Commit 1c59546e authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by Greg Kroah-Hartman
Browse files

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



commit ddff7ed45edce4a4c92949d3c61cd25d229c4a14 upstream.

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")
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>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 167d652e
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2387,10 +2387,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 */
@@ -2400,7 +2400,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);
@@ -2998,7 +2998,7 @@ iospace_config_failed:
	kfree(ha);
	ha = NULL;

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