Message ID | 2aa6bd31-f3d8-41ac-abf1-9ec7cf7e064b@web.de |
---|---|
State | New |
Headers | show |
Series | mmc: mmc_spi: Adjust error handling in mmc_spi_probe() | expand |
On Wed, Dec 27, 2023 at 12:50:50PM +0100, Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Wed, 27 Dec 2023 12:23:20 +0100 > > The kfree() function was called in one case by > the mmc_spi_probe() function during error handling > even if the passed variable contained a null pointer. > This issue was detected by using the Coccinelle software. > * Thus return directly after a call of the function “kmalloc” failed > at the beginning. > > * Move an error code assignment into an if branch. How is this one better?
>> The kfree() function was called in one case by >> the mmc_spi_probe() function during error handling >> even if the passed variable contained a null pointer. >> This issue was detected by using the Coccinelle software. > >> * Thus return directly after a call of the function “kmalloc” failed >> at the beginning. >> >> * Move an error code assignment into an if branch. > > How is this one better? I suggest to avoid a bit of redundant data processing also at this source code place. Regards, Markus
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c index b0cccef4cfbf..6e7d8e1e6f38 100644 --- a/drivers/mmc/host/mmc_spi.c +++ b/drivers/mmc/host/mmc_spi.c @@ -1349,15 +1349,17 @@ static int mmc_spi_probe(struct spi_device *spi) * NOTE if many systems use more than one MMC-over-SPI connector * it'd save some memory to share this. That's evidently rare. */ - status = -ENOMEM; ones = kmalloc(MMC_SPI_BLOCKSIZE, GFP_KERNEL); if (!ones) - goto nomem; + return -ENOMEM; + memset(ones, 0xff, MMC_SPI_BLOCKSIZE); mmc = mmc_alloc_host(sizeof(*host), &spi->dev); - if (!mmc) + if (!mmc) { + status = -ENOMEM; goto nomem; + } mmc->ops = &mmc_spi_ops; mmc->max_blk_size = MMC_SPI_BLOCKSIZE;