]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
spi: xilinx_spips: Fix potential memory leaks
authorSoren Brinkmann <soren.brinkmann@xilinx.com>
Sat, 17 Nov 2012 02:17:39 +0000 (18:17 -0800)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 19 Nov 2012 09:59:04 +0000 (10:59 +0100)
The spi_master struct was dynamically allocated but never freed.
Memory allocation used the type instead of *identifier to determine
the size of the area to allocate.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
drivers/spi/spi-xilinx-ps.c

index 18fea3691af8cc85dceac3a8a61df7f8b19a414b..985d2c27eb775c64e4e75b17805581b4f2f421ad 100644 (file)
@@ -645,7 +645,7 @@ static int __devinit xspips_probe(struct platform_device *dev)
        struct resource *r;
        const unsigned int *prop;
 
-       master = spi_alloc_master(&dev->dev, sizeof(struct xspips));
+       master = spi_alloc_master(&dev->dev, sizeof(*xspi));
        if (master == NULL)
                return -ENOMEM;
 
@@ -769,6 +769,7 @@ release_mem:
 put_master:
        platform_set_drvdata(dev, NULL);
        spi_master_put(master);
+       kfree(master);
        return ret;
 }
 
@@ -807,6 +808,7 @@ static int __devexit xspips_remove(struct platform_device *dev)
 
        spi_unregister_master(master);
        spi_master_put(master);
+       kfree(master);
 
        /* Prevent double remove */
        platform_set_drvdata(dev, NULL);