aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2009-08-09 10:08:07 +0000
committerFlorian Fainelli <florian@openwrt.org>2009-08-09 10:08:07 +0000
commit6ed6216d1c3d378aa7f01f1730c57fd0f48da532 (patch)
treec0f63faa7ff08af2fa272914b62d0d48a6e198ee /target
parent0ccd17a20e56913a088df7ff5d1f44960d9c2936 (diff)
downloadupstream-6ed6216d1c3d378aa7f01f1730c57fd0f48da532.tar.gz
upstream-6ed6216d1c3d378aa7f01f1730c57fd0f48da532.tar.bz2
upstream-6ed6216d1c3d378aa7f01f1730c57fd0f48da532.zip
[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
Diffstat (limited to 'target')
-rw-r--r--target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c15
1 files 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 53775c9e3d..de373b22b8 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);