From e5f2357869228cd8453b65db9ee578553edd3494 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 9 Aug 2009 10:08:07 +0000 Subject: [PATCH] [brcm63xx] fix assignment instead of comparison in the mtd driver (#5649) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17188 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/drivers/mtd/maps/bcm963xx-flash.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c b/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c index 53775c9e3..de373b22b 100644 --- a/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c +++ b/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c @@ -134,7 +134,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * sscanf(buf->bccfe.kernelAddress, "%u", &kerneladdr); sscanf(buf->bccfe.kernelLength, "%u", &kernellen); sscanf(buf->bccfe.totalLength, "%u", &totallen); - tagidcrc = buf->bccfe.tagIdCRC; + tagidcrc = *(uint32_t *)&(buf->bccfe.tagIdCRC[0]); tagversion = &(buf->bccfe.tagVersion[0]); boardid = &(buf->bccfe.boardid[0]); break; @@ -146,7 +146,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * sscanf(buf->bc300.kernelAddress, "%u", &kerneladdr); sscanf(buf->bc300.kernelLength, "%u", &kernellen); sscanf(buf->bc300.totalLength, "%u", &totallen); - tagidcrc = buf->bc300.tagIdCRC; + tagidcrc = *(uint32_t *)&(buf->bc300.tagIdCRC[0]); tagversion = &(buf->bc300.tagVersion[0]); boardid = &(buf->bc300.boardid[0]); break; @@ -158,7 +158,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * sscanf(buf->ag306.kernelAddress, "%u", &kerneladdr); sscanf(buf->ag306.kernelLength, "%u", &kernellen); sscanf(buf->ag306.totalLength, "%u", &totallen); - tagidcrc = buf->ag306.tagIdCRC; + tagidcrc = *(uint32_t *)&(buf->ag306.tagIdCRC[0]); tagversion = &(buf->ag306.tagVersion[0]); boardid = &(buf->ag306.boardid[0]); break; @@ -170,7 +170,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * sscanf(buf->bc221.kernelAddress, "%u", &kerneladdr); sscanf(buf->bc221.kernelLength, "%u", &kernellen); sscanf(buf->bc221.totalLength, "%u", &totallen); - tagidcrc = buf->bc221.tagIdCRC; + tagidcrc = *(uint32_t *)&(buf->bc221.tagIdCRC[0]); tagversion = &(buf->bc221.tagVersion[0]); boardid = &(buf->bc221.boardid[0]); break; @@ -182,7 +182,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * sscanf(buf->bc310.kernelAddress, "%u", &kerneladdr); sscanf(buf->bc310.kernelLength, "%u", &kernellen); sscanf(buf->bc310.totalLength, "%u", &totallen); - tagidcrc = buf->bc310.tagIdCRC; + tagidcrc = *(uint32_t *)&(buf->bc310.tagIdCRC[0]); tagversion = &(buf->bc310.tagVersion[0]); boardid = &(buf->bc310.boardid[0]); break; @@ -191,8 +191,8 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * continue; } - calctagidcrc = tagcrc32(IMAGETAG_CRC_START, tagid, TAGID_LEN); - if (tagidcrc = calctagidcrc) { + calctagidcrc = htonl(tagcrc32(IMAGETAG_CRC_START, tagid, TAGID_LEN)); + if (tagidcrc == calctagidcrc) { tagid_match = true; break; } @@ -263,6 +263,7 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition * for (i = 0; i < nrparts; i++) printk(KERN_INFO PFX "Partition %d is %s offset %llx and length %llx\n", i, parts[i].name, parts[i].offset, parts[i].size); + printk(KERN_INFO PFX "Spare partition is %x offset and length %x\n", spareaddr, sparelen); *pparts = parts; vfree(buf); -- 2.20.1