spi flash: fix crash due to spi flash miscommunication
authorBrad Bozarth <bflinux@yumbrad.com>
Fri, 2 Jan 2009 03:45:47 +0000 (22:45 -0500)
committerWolfgang Denk <wd@denx.de>
Sat, 24 Jan 2009 00:57:40 +0000 (01:57 +0100)
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@yumbrad.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
drivers/mtd/spi/atmel.c
drivers/mtd/spi/stmicro.c

index 10fcf0cdde88d7d8b6d80c58d9bb0845258d1601..a5f51caf460b1a3cedf374307f56c7d741150921 100644 (file)
@@ -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 *
index 86324e4e1da81773c7cb91261992a0c4d0dc8d8c..e7dda91a407788093ef7d216e99f4a825a8f4c98 100644 (file)
@@ -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