diff options
author | Guenter Roeck <linux@roeck-us.net> | 2012-08-18 20:29:21 +0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-08-22 22:26:36 +0400 |
commit | 866c0f25d2dc896e647970cf5e371b5083a6e5d5 (patch) | |
tree | b8d376d6b0c3602aeb16225c6d7f8e101bed4b23 /drivers/spi/spi-mpc52xx.c | |
parent | 495e3ff365425f9b69884ddde36047184f37c2bd (diff) | |
download | linux-866c0f25d2dc896e647970cf5e371b5083a6e5d5.tar.xz |
spi/mpc52xx: Fix error handling in probe function
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>
Diffstat (limited to 'drivers/spi/spi-mpc52xx.c')
-rw-r--r-- | drivers/spi/spi-mpc52xx.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/spi/spi-mpc52xx.c b/drivers/spi/spi-mpc52xx.c index cb3a3830b0a5..a749589677be 100644 --- a/drivers/spi/spi-mpc52xx.c +++ b/drivers/spi/spi-mpc52xx.c @@ -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); |