spi: fsl-dspi: Remove possible memory leak of 'chip'
authorBhuvanchandra DV <bhuvanchandra.dv@toradex.com>
Sat, 31 Jan 2015 16:33:25 +0000 (22:03 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 2 Feb 2015 20:05:19 +0000 (20:05 +0000)
Move the check for spi->bits_per_word
before allocation, to avoid memory leak.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-dspi.c

index 2c52c2e185c7ef717c7ad55526698546fa5cf3d7..d1a39249704a7e3a16bcd861bc7f16f5a9ed02dd 100644 (file)
@@ -347,6 +347,13 @@ static int dspi_setup(struct spi_device *spi)
        struct fsl_dspi *dspi = spi_master_get_devdata(spi->master);
        unsigned char br = 0, pbr = 0, fmsz = 0;
 
+       if ((spi->bits_per_word >= 4) && (spi->bits_per_word <= 16)) {
+               fmsz = spi->bits_per_word - 1;
+       } else {
+               pr_err("Invalid wordsize\n");
+               return -ENODEV;
+       }
+
        /* Only alloc on first setup */
        chip = spi_get_ctldata(spi);
        if (chip == NULL) {
@@ -357,12 +364,6 @@ static int dspi_setup(struct spi_device *spi)
 
        chip->mcr_val = SPI_MCR_MASTER | SPI_MCR_PCSIS |
                SPI_MCR_CLR_TXF | SPI_MCR_CLR_RXF;
-       if ((spi->bits_per_word >= 4) && (spi->bits_per_word <= 16)) {
-               fmsz = spi->bits_per_word - 1;
-       } else {
-               pr_err("Invalid wordsize\n");
-               return -ENODEV;
-       }
 
        chip->void_write_data = 0;