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

Commit c60a32cd authored by Dan Carpenter's avatar Dan Carpenter Committed by Pierre Ossman
Browse files

sdhci-pci: bad error handling in probe function

The goto unmap is too early, we haven't allocated host or done the
request_region().

Found by smatch (http://repo.or.cz/w/smatch.git

).

[ Second error path fix by Pierre Ossman ]

Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
Signed-off-by: default avatarPierre Ossman <pierre@ossman.eu>
parent 548d2de9
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -522,8 +522,8 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(

	host = sdhci_alloc_host(&pdev->dev, sizeof(struct sdhci_pci_slot));
	if (IS_ERR(host)) {
		ret = PTR_ERR(host);
		goto unmap;
		dev_err(&pdev->dev, "cannot allocate host\n");
		return ERR_PTR(PTR_ERR(host));
	}

	slot = sdhci_priv(host);
@@ -541,7 +541,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(
	ret = pci_request_region(pdev, bar, mmc_hostname(host->mmc));
	if (ret) {
		dev_err(&pdev->dev, "cannot request region\n");
		return ERR_PTR(ret);
		goto free;
	}

	addr = pci_resource_start(pdev, bar);
@@ -572,6 +572,8 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(

release:
	pci_release_region(pdev, bar);

free:
	sdhci_free_host(host);

	return ERR_PTR(ret);