Skip to content

Commit

Permalink
spi/mpc52xx: Fix error handling in probe function
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Guenter Roeck authored and Mark Brown committed Aug 22, 2012
1 parent 495e3ff commit 866c0f2
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/spi/spi-mpc52xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 866c0f2

Please sign in to comment.