[U-Boot] [PATCH] spi flash: fix crash due to spi flash miscommunication

Mike Frysinger vapier at gentoo.org
Fri Jan 2 04:45:47 CET 2009


From: Brad Bozarth <bflinux at yumbrad.com>

Higher spi flash layers expect to be given back a pointer that was
malloced so that it can free the result, but the lower layers return a
pointer that is in the middle of the malloced memory.  Reorder the members
of the lower spi structures so that things work out.

Signed-off-by: Brad Bozarth <bflinux at yumbrad.com>
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
CC: Haavard Skinnemoen <haavard.skinnemoen at atmel.com>
---
Jason McMullan: your winbond driver will need a similar change:
	drivers/mtd/spi/winbond.c
	+/* spi_flash needs to be first so upper layers can free() it */
	 struct winbond_spi_flash {
	-	const struct winbond_spi_flash_params *params;
	 	struct spi_flash flash;
	+	const struct winbond_spi_flash_params *params;
	 };

 drivers/mtd/spi/atmel.c   |    3 ++-
 drivers/mtd/spi/stmicro.c |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi/atmel.c b/drivers/mtd/spi/atmel.c
index 10fcf0c..a5f51ca 100644
--- a/drivers/mtd/spi/atmel.c
+++ b/drivers/mtd/spi/atmel.c
@@ -39,9 +39,10 @@ struct atmel_spi_flash_params {
 	const char	*name;
 };
 
+/* spi_flash needs to be first so upper layers can free() it */
 struct atmel_spi_flash {
-	const struct atmel_spi_flash_params *params;
 	struct spi_flash flash;
+	const struct atmel_spi_flash_params *params;
 };
 
 static inline struct atmel_spi_flash *
diff --git a/drivers/mtd/spi/stmicro.c b/drivers/mtd/spi/stmicro.c
index 86324e4..e7dda91 100644
--- a/drivers/mtd/spi/stmicro.c
+++ b/drivers/mtd/spi/stmicro.c
@@ -64,9 +64,10 @@ struct stmicro_spi_flash_params {
 	const char *name;
 };
 
+/* spi_flash needs to be first so upper layers can free() it */
 struct stmicro_spi_flash {
-	const struct stmicro_spi_flash_params *params;
 	struct spi_flash flash;
+	const struct stmicro_spi_flash_params *params;
 };
 
 static inline struct stmicro_spi_flash *to_stmicro_spi_flash(struct spi_flash
-- 
1.6.0.6



More information about the U-Boot mailing list