X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/f46a1cc756ba8be68f2ad7b02696734cd68382aa..64684c2ee3f651512139ac3b97a843b00cb36de6:/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c diff --git a/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c b/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c index da54e0ff4..c8233ce59 100644 --- a/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c +++ b/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c @@ -123,12 +123,8 @@ static int wrt160nl_parse_partitions(struct mtd_info *master, goto free_hdr; } - kernel_len = uheader->ih_size / master->erasesize; - if (uheader->ih_size % master->erasesize) - kernel_len++; - - kernel_len++; - kernel_len *= master->erasesize; + kernel_len = le32_to_cpu(theader->offsets[1]) + + sizeof(struct cybertan_header); trx_parts[0].name = "u-boot"; trx_parts[0].offset = 0; @@ -142,7 +138,8 @@ static int wrt160nl_parse_partitions(struct mtd_info *master, trx_parts[2].name = "rootfs"; trx_parts[2].offset = trx_parts[1].offset + trx_parts[1].size; - trx_parts[2].size = master->size - 6 * master->erasesize - trx_parts[1].size; + trx_parts[2].size = master->size - 6 * master->erasesize - + trx_parts[1].size; trx_parts[2].mask_flags = 0; trx_parts[3].name = "nvram"; @@ -163,9 +160,9 @@ static int wrt160nl_parse_partitions(struct mtd_info *master, *pparts = trx_parts; ret = TRX_PARTS; - free_hdr: +free_hdr: vfree(header); - out: +out: return ret; }