[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1287327106-9111-1-git-send-email-segooon@gmail.com>
Date: Sun, 17 Oct 2010 18:51:46 +0400
From: Vasiliy Kulikov <segooon@...il.com>
To: kernel-janitors@...r.kernel.org
Cc: Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
Daniel Drake <dsd@...top.org>, linux-kernel@...r.kernel.org
Subject: [PATCH] x86: kernel: olpc-xo1: fix error handling code
If anything failed during initialization then setup_bases() should
call pci_disable_device(). Also reference got from pci_get_device()
should be freed with pci_dev_put().
Signed-off-by: Vasiliy Kulikov <segooon@...il.com>
---
arch/x86/kernel/olpc-xo1.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/olpc-xo1.c b/arch/x86/kernel/olpc-xo1.c
index f5442c0..05331cf 100644
--- a/arch/x86/kernel/olpc-xo1.c
+++ b/arch/x86/kernel/olpc-xo1.c
@@ -71,20 +71,25 @@ static int __devinit setup_bases(struct pci_dev *pdev)
r = pci_request_region(pdev, ACPI_BAR, DRV_NAME);
if (r) {
dev_err(&pdev->dev, "can't alloc PCI BAR #%d\n", ACPI_BAR);
- return r;
+ goto err_disable;
}
r = pci_request_region(pdev, PMS_BAR, DRV_NAME);
if (r) {
dev_err(&pdev->dev, "can't alloc PCI BAR #%d\n", PMS_BAR);
- pci_release_region(pdev, ACPI_BAR);
- return r;
+ goto err_region1;
}
acpi_base = pci_resource_start(pdev, ACPI_BAR);
pms_base = pci_resource_start(pdev, PMS_BAR);
return 0;
+
+err_region1:
+ pci_release_region(pdev, ACPI_BAR);
+err_disable:
+ pci_disable_device(pdev);
+ return r;
}
static int __devinit olpc_xo1_probe(struct platform_device *pdev)
@@ -98,6 +103,7 @@ static int __devinit olpc_xo1_probe(struct platform_device *pdev)
return -ENODEV;
r = setup_bases(pcidev);
+ pci_dev_put(pcidev);
if (r)
return r;
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists