From 5e15a753cd98c377f9b101942d138898feccd19d Mon Sep 17 00:00:00 2001 From: Jens Taprogge Date: Tue, 4 Sep 2012 17:01:06 +0200 Subject: [PATCH] Staging: ipack/bridges/tpci200: Reorganize tpci200_probe in preparation for functional changes. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These changes make it easier to add more initialization steps later on. Signed-off-by: Jens Taprogge Signed-off-by: Samuel Iglesias Gonsálvez Signed-off-by: Greg Kroah-Hartman --- drivers/staging/ipack/bridges/tpci200.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/staging/ipack/bridges/tpci200.c b/drivers/staging/ipack/bridges/tpci200.c index 5831af8..eda02e7 100644 --- a/drivers/staging/ipack/bridges/tpci200.c +++ b/drivers/staging/ipack/bridges/tpci200.c @@ -790,8 +790,8 @@ static int tpci200_pciprobe(struct pci_dev *pdev, tpci200->info = kzalloc(sizeof(struct tpci200_infos), GFP_KERNEL); if (!tpci200->info) { - kfree(tpci200); - return -ENOMEM; + ret = -ENOMEM; + goto out_err_info; } /* Save struct pci_dev pointer */ @@ -801,10 +801,9 @@ static int tpci200_pciprobe(struct pci_dev *pdev, /* register the device and initialize it */ ret = tpci200_install(tpci200); if (ret) { - dev_err(&pdev->dev, "Error during tpci200 install !\n"); - kfree(tpci200->info); - kfree(tpci200); - return -ENODEV; + dev_err(&pdev->dev, "error during tpci200 install\n"); + ret = -ENODEV; + goto out_err_install; } /* Register the carrier in the industry pack bus driver */ @@ -814,10 +813,8 @@ static int tpci200_pciprobe(struct pci_dev *pdev, if (!tpci200->info->ipack_bus) { dev_err(&pdev->dev, "error registering the carrier on ipack driver\n"); - tpci200_uninstall(tpci200); - kfree(tpci200->info); - kfree(tpci200); - return -EFAULT; + ret = -EFAULT; + goto out_err_bus_register; } /* save the bus number given by ipack to logging purpose */ @@ -831,6 +828,14 @@ static int tpci200_pciprobe(struct pci_dev *pdev, for (i = 0; i < TPCI200_NB_SLOT; i++) tpci200->slots[i].dev = ipack_device_register(tpci200->info->ipack_bus, i, i); + return 0; + +out_err_bus_register: + tpci200_uninstall(tpci200); +out_err_install: + kfree(tpci200->info); +out_err_info: + kfree(tpci200); return ret; } -- 2.7.4