Re: [U-Boot] [PATCH] cmd_jffs2: Fix get_part_sector_size_nor() overflow bug
Dear Peter Tyser, In message <1293745676-1557-1-git-send-email-pty...@xes-inc.com> you wrote: > When a flash partition was positioned at the very top of a 32-bit memory > map (eg located at 0xf800 with a size of 0x800) > get_part_sector_size_nor() would incorrectly calculate the partition's > ending address to 0x0 due to overflow. When the overflow occurred > get_part_sector_size_nor() would falsely return a sector size of 0. > A sector size of 0 results in subsequent jffs2 operations failing. > > To workaround the overflow subtract 1 from calculated address of > the partition endpoint. > > Signed-off-by: Peter Tyser > --- > common/cmd_jffs2.c |2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) Applied. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de I am a computer. I am dumber than any human and smarter than any ad- ministrator. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH] cmd_jffs2: Fix get_part_sector_size_nor() overflow bug
When a flash partition was positioned at the very top of a 32-bit memory map (eg located at 0xf800 with a size of 0x800) get_part_sector_size_nor() would incorrectly calculate the partition's ending address to 0x0 due to overflow. When the overflow occurred get_part_sector_size_nor() would falsely return a sector size of 0. A sector size of 0 results in subsequent jffs2 operations failing. To workaround the overflow subtract 1 from calculated address of the partition endpoint. Signed-off-by: Peter Tyser --- common/cmd_jffs2.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/common/cmd_jffs2.c b/common/cmd_jffs2.c index 0e7a6b0..27296dd 100644 --- a/common/cmd_jffs2.c +++ b/common/cmd_jffs2.c @@ -281,7 +281,7 @@ static inline u32 get_part_sector_size_nor(struct mtdids *id, struct part_info * flash = &flash_info[id->num]; start_phys = flash->start[0] + part->offset; - end_phys = start_phys + part->size; + end_phys = start_phys + part->size - 1; for (i = 0; i < flash->sector_count; i++) { if (flash->start[i] >= end_phys) -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot