spi/mpc52xx: Fix error handling in probe function
authorGuenter Roeck <linux@roeck-us.net>
Sat, 18 Aug 2012 16:29:21 +0000 (09:29 -0700)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 22 Aug 2012 18:26:36 +0000 (19:26 +0100)
The call to spi_master_put() is needed to free device memory. It must be called
after spi_alloc_master, and must only be called after the device memory is no
longer used.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/spi/spi-mpc52xx.c

index cb3a383..a749589 100644 (file)
@@ -454,7 +454,7 @@ static int __devinit mpc52xx_spi_probe(struct platform_device *op)
                                GFP_KERNEL);
                if (!ms->gpio_cs) {
                        rc = -ENOMEM;
-                       goto err_alloc;
+                       goto err_alloc_gpio;
                }
 
                for (i = 0; i < ms->gpio_cs_count; i++) {
@@ -514,12 +514,13 @@ static int __devinit mpc52xx_spi_probe(struct platform_device *op)
 
  err_register:
        dev_err(&ms->master->dev, "initialization failed\n");
-       spi_master_put(master);
  err_gpio:
        while (i-- > 0)
                gpio_free(ms->gpio_cs[i]);
 
        kfree(ms->gpio_cs);
+ err_alloc_gpio:
+       spi_master_put(master);
  err_alloc:
  err_init:
        iounmap(regs);