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 <li...@roeck-us.net>
---
 drivers/spi/spi-mpc52xx.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-mpc52xx.c b/drivers/spi/spi-mpc52xx.c
index cb3a383..a749589 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);
-- 
1.7.9.7


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to