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

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
...@@ -522,8 +522,8 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot( ...@@ -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)); host = sdhci_alloc_host(&pdev->dev, sizeof(struct sdhci_pci_slot));
if (IS_ERR(host)) { if (IS_ERR(host)) {
ret = PTR_ERR(host); dev_err(&pdev->dev, "cannot allocate host\n");
goto unmap; return ERR_PTR(PTR_ERR(host));
} }
slot = sdhci_priv(host); slot = sdhci_priv(host);
...@@ -541,7 +541,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot( ...@@ -541,7 +541,7 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(
ret = pci_request_region(pdev, bar, mmc_hostname(host->mmc)); ret = pci_request_region(pdev, bar, mmc_hostname(host->mmc));
if (ret) { if (ret) {
dev_err(&pdev->dev, "cannot request region\n"); dev_err(&pdev->dev, "cannot request region\n");
return ERR_PTR(ret); goto free;
} }
addr = pci_resource_start(pdev, bar); addr = pci_resource_start(pdev, bar);
...@@ -572,6 +572,8 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot( ...@@ -572,6 +572,8 @@ static struct sdhci_pci_slot * __devinit sdhci_pci_probe_slot(
release: release:
pci_release_region(pdev, bar); pci_release_region(pdev, bar);
free:
sdhci_free_host(host); sdhci_free_host(host);
return ERR_PTR(ret); return ERR_PTR(ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment