12345678910111213141516171819202122232425262728293031323334 |
- --- a/drivers/mtd/bcm47xxpart.c
- +++ b/drivers/mtd/bcm47xxpart.c
- @@ -127,6 +127,7 @@ static int bcm47xxpart_parse(struct mtd_
- int last_trx_part = -1;
- int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
- int err;
- + bool found_nvram = false;
-
- /*
- * Some really old flashes (like AT45DB*) had smaller erasesize-s, but
- @@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_
- if (buf[0] == NVRAM_HEADER) {
- bcm47xxpart_add_part(&parts[curr_part++], "nvram",
- master->size - blocksize, 0);
- + found_nvram = true;
- break;
- }
- }
-
- kfree(buf);
-
- + if (!found_nvram) {
- + pr_err("can not find a nvram partition reserve last block\n");
- + bcm47xxpart_add_part(&parts[curr_part++], "nvram_guess",
- + master->size - blocksize * 2, MTD_WRITEABLE);
- + for (i = 0; i < curr_part; i++) {
- + if (parts[i].size + parts[i].offset == master->size)
- + parts[i].offset -= blocksize * 2;
- + }
- + }
- +
- /*
- * Assume that partitions end at the beginning of the one they are
- * followed by.
|