Skip to content

Commit

Permalink
[PATCH] ARM: 2780/1: AFS partition length calculation fix
Browse files Browse the repository at this point in the history
Patch from Catalin Marinas

This patch calculates the AFS partition length by expanding the image
length information to the nearest erase block boundary. This
eliminates the problems with JFFS2 erasing the footer.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Catalin Marinas authored and Russell King committed Jun 30, 2005
1 parent abaf48a commit 747aead
Showing 1 changed file with 2 additions and 14 deletions.
16 changes: 2 additions & 14 deletions drivers/mtd/afs.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ static int parse_afs_partitions(struct mtd_info *mtd,
*/
for (idx = off = 0; off < mtd->size; off += mtd->erasesize) {
struct image_info_struct iis;
u_int iis_ptr, img_ptr, size;
u_int iis_ptr, img_ptr;

/* Read the footer. */
ret = afs_read_footer(mtd, &img_ptr, &iis_ptr, off, mask);
Expand All @@ -236,21 +236,9 @@ static int parse_afs_partitions(struct mtd_info *mtd,
continue;

strcpy(str, iis.name);
size = mtd->erasesize + off - img_ptr;

/*
* In order to support JFFS2 partitions on this layout,
* we must lie to MTD about the real size of JFFS2
* partitions; this ensures that the AFS flash footer
* won't be erased by JFFS2. Please ensure that your
* JFFS2 partitions are given image numbers between
* 1000 and 2000 inclusive.
*/
if (iis.imageNumber >= 1000 && iis.imageNumber < 2000)
size -= mtd->erasesize;

parts[idx].name = str;
parts[idx].size = size;
parts[idx].size = (iis.length + mtd->erasesize - 1) & ~(mtd->erasesize - 1);
parts[idx].offset = img_ptr;
parts[idx].mask_flags = 0;

Expand Down

0 comments on commit 747aead

Please sign in to comment.