Browse Source

fix assignment instead of comparison in the mtd driver (#5649)

SVN-Revision: 17188
Florian Fainelli 16 years ago
parent
commit
2437f53f1d
1 changed files with 8 additions and 7 deletions
  1. 8 7
      target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c

+ 8 - 7
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);