summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2014-03-24 11:46:55 +0400
committerMark Brown <broonie@linaro.org>2014-03-24 14:57:02 +0400
commitb86e81d9a7d28a658904d8b14da7b5cb0d8f8a21 (patch)
tree3248a8d2a95aad9d351400eea7011387ac664a0f /drivers/spi
parentc1b20aa5d3b164a860e13b1bc5e85a24e45f0072 (diff)
downloadlinux-b86e81d9a7d28a658904d8b14da7b5cb0d8f8a21.tar.xz
spi: topcliff-pch: Properly unregister platform devices on probe() error paths
Ensure all registered platform devices are unregistered on probe() error paths. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-topcliff-pch.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
index dc5d2d489953..372811aa5fb2 100644
--- a/drivers/spi/spi-topcliff-pch.c
+++ b/drivers/spi/spi-topcliff-pch.c
@@ -1568,8 +1568,7 @@ static struct platform_driver pch_spi_pd_driver = {
.resume = pch_spi_pd_resume
};
-static int pch_spi_probe(struct pci_dev *pdev,
- const struct pci_device_id *id)
+static int pch_spi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
struct pch_spi_board_data *board_dat;
struct platform_device *pd_dev = NULL;
@@ -1639,6 +1638,8 @@ static int pch_spi_probe(struct pci_dev *pdev,
return 0;
err_platform_device:
+ while (--i >= 0)
+ platform_device_unregister(pd_dev_save->pd_save[i]);
pci_disable_device(pdev);
pci_enable_device:
pci_release_regions(pdev);