[PATCH] mtd/redboot: Handle holes in fis table
authorPeter Korsgaard <jacmet@sunsite.dk>
Fri, 31 Mar 2006 10:29:52 +0000 (02:29 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 31 Mar 2006 20:18:49 +0000 (12:18 -0800)
Redboot simply sets the first character of a fis entry to 0xff on "fis
delete".  The kernel redboot parser stops parsing on such an entry, and
without this patch any entries after a deleted image would not be detected.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Acked-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/mtd/redboot.c

index 8815c8dbef2d076de1871035209cabf12c606d50..c077d2ec9cddbe5ca19fba9e7acb53f20ed4e890 100644 (file)
@@ -85,10 +85,6 @@ static int parse_redboot_partitions(struct mtd_info *master,
 
        numslots = (master->erasesize / sizeof(struct fis_image_desc));
        for (i = 0; i < numslots; i++) {
-               if (buf[i].name[0] == 0xff) {
-                       i = numslots;
-                       break;
-               }
                if (!memcmp(buf[i].name, "FIS directory", 14)) {
                        /* This is apparently the FIS directory entry for the
                         * FIS directory itself.  The FIS directory size is
@@ -128,7 +124,7 @@ static int parse_redboot_partitions(struct mtd_info *master,
                struct fis_list *new_fl, **prev;
 
                if (buf[i].name[0] == 0xff)
-                       break;
+                       continue;
                if (!redboot_checksum(&buf[i]))
                        break;