diff options
| author | Stefan Roese <sr@denx.de> | 2008-11-27 14:05:15 +0100 | 
|---|---|---|
| committer | Stefan Roese <sr@denx.de> | 2008-12-09 10:07:23 +0100 | 
| commit | 9def12cae33d2d3ea2dd56b197fd3dfb3ad60bf4 (patch) | |
| tree | 2c28e1e5d5ad3dbfc5414619145e3f59c4844ad0 | |
| parent | 13d36ec849785453953d00220b2c7dc66644a3c2 (diff) | |
| download | olio-uboot-2014.01-9def12cae33d2d3ea2dd56b197fd3dfb3ad60bf4.tar.xz olio-uboot-2014.01-9def12cae33d2d3ea2dd56b197fd3dfb3ad60bf4.zip | |
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.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 9a3bf6f39..f010f5e3a 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++) { |