This is a note to let you know that I've just added the patch titled mtd: m25p80: fix allocation size to the 3.12-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: mtd-m25p80-fix-allocation-size.patch and it can be found in the queue-3.12 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 778d226a1462572b51d6777cdb1d611543410cb4 Mon Sep 17 00:00:00 2001 From: Brian Norris <computersforpeace@xxxxxxxxx> Date: Wed, 24 Jul 2013 18:32:07 -0700 Subject: mtd: m25p80: fix allocation size From: Brian Norris <computersforpeace@xxxxxxxxx> commit 778d226a1462572b51d6777cdb1d611543410cb4 upstream. This patch fixes two memory errors: 1. During a probe failure (in mtd_device_parse_register?) the command buffer would not be freed. 2. The command buffer's size is determined based on the 'fast_read' boolean, but the assignment of fast_read is made after this allocation. Thus, the buffer may be allocated "too small". To fix the first, just switch to the devres version of kzalloc. To fix the second, increase MAX_CMD_SIZE unconditionally. It's not worth saving a byte to fiddle around with the conditions here. This problem was reported by Yuhang Wang a while back. Signed-off-by: Brian Norris <computersforpeace@xxxxxxxxx> Reported-by: Yuhang Wang <wangyuhang2014@xxxxxxxxx> Reviewed-by: Sourav Poddar <sourav.poddar@xxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/mtd/devices/m25p80.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -78,7 +78,7 @@ /* Define max times to check status register before we give up. */ #define MAX_READY_WAIT_JIFFIES (40 * HZ) /* M25P16 specs 40s max chip erase */ -#define MAX_CMD_SIZE 5 +#define MAX_CMD_SIZE 6 #define JEDEC_MFR(_jedec_id) ((_jedec_id) >> 16) @@ -992,15 +992,13 @@ static int m25p_probe(struct spi_device } } - flash = kzalloc(sizeof *flash, GFP_KERNEL); + flash = devm_kzalloc(&spi->dev, sizeof(*flash), GFP_KERNEL); if (!flash) return -ENOMEM; - flash->command = kmalloc(MAX_CMD_SIZE + (flash->fast_read ? 1 : 0), - GFP_KERNEL); - if (!flash->command) { - kfree(flash); + + flash->command = devm_kzalloc(&spi->dev, MAX_CMD_SIZE, GFP_KERNEL); + if (!flash->command) return -ENOMEM; - } flash->spi = spi; mutex_init(&flash->lock); @@ -1133,14 +1131,10 @@ static int m25p_probe(struct spi_device static int m25p_remove(struct spi_device *spi) { struct m25p *flash = spi_get_drvdata(spi); - int status; /* Clean up MTD stuff. */ - status = mtd_device_unregister(&flash->mtd); - if (status == 0) { - kfree(flash->command); - kfree(flash); - } + mtd_device_unregister(&flash->mtd); + return 0; } Patches currently in stable-queue which might be from computersforpeace@xxxxxxxxx are queue-3.12/mtd-nand-hack-onfi-for-non-power-of-2-dimensions.patch queue-3.12/mtd-map-fixed-bug-in-64-bit-systems.patch queue-3.12/mtd-gpmi-fix-the-null-pointer.patch queue-3.12/mtd-m25p80-fix-allocation-size.patch queue-3.12/mtd-atmel_nand-fix-bug-driver-will-in-a-dead-lock-if-no-nand-detected.patch queue-3.12/mtd-gpmi-fix-kernel-bug-due-to-racing-dma-operations.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html