summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2008-11-27 14:05:15 +0100
committerStefan Roese <sr@denx.de>2008-12-09 10:07:23 +0100
commit9def12cae33d2d3ea2dd56b197fd3dfb3ad60bf4 (patch)
tree2c28e1e5d5ad3dbfc5414619145e3f59c4844ad0
parent13d36ec849785453953d00220b2c7dc66644a3c2 (diff)
MTD: Fix problem based on non-working relocation (list head mtd_partitions)
Don't use LIST_HEAD() but initialize the struct via INIT_LIST_HEAD() upon first call of add_mtd_partitions(). Otherwise this won't work on platforms where the relocation is broken (like MIPS or PPC). Signed-off-by: Stefan Roese <sr@denx.de>
-rw-r--r--drivers/mtd/mtdpart.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 9a3bf6f39d..f010f5e3ac 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -20,7 +20,7 @@
#include <linux/mtd/compat.h>
/* Our partition linked list */
-static LIST_HEAD(mtd_partitions);
+struct list_head mtd_partitions;
/* Our partition node structure */
struct mtd_part {
@@ -349,6 +349,14 @@ int add_mtd_partitions(struct mtd_info *master,
u_int32_t cur_offset = 0;
int i;
+ /*
+ * Need to init the list here, since LIST_INIT() does not
+ * work on platforms where relocation has problems (like MIPS
+ * & PPC).
+ */
+ if (mtd_partitions.next == NULL)
+ INIT_LIST_HEAD(&mtd_partitions);
+
printk (KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
for (i = 0; i < nbparts; i++) {