fix kernel oops in the redboot partition parser when CONFIG_MTD_REDBOOT_PARTS_UNALLOC...
authorFelix Fietkau <nbd@openwrt.org>
Sat, 26 Jul 2008 20:27:45 +0000 (20:27 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 26 Jul 2008 20:27:45 +0000 (20:27 +0000)
SVN-Revision: 11948

target/linux/generic-2.6/patches-2.6.23/070-redboot_space.patch
target/linux/generic-2.6/patches-2.6.24/070-redboot_space.patch
target/linux/generic-2.6/patches-2.6.25/070-redboot_space.patch
target/linux/generic-2.6/patches-2.6.26/070-redboot_space.patch

index 2f31555..b4d57cb 100644 (file)
 +                              parts[i].size = fl->next->img->flash_base;
 +                              parts[i].size &= ~(master->erasesize - 1);
 +                              parts[i].size -= parts[i].offset;
-+                      }
 +#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
-+                      else {
++                              nrparts--;
++                      } else {
 +                              i++;
 +                              parts[i].offset = parts[i-1].size + parts[i-1].offset;
 +                              parts[i].size = fl->next->img->flash_base - parts[i].offset;
 +                              parts[i].name = nullname;
-+                      }
  #endif
++                      }
 +              }
                tmp_fl = fl;
                fl = fl->next;
index 2f31555..b4d57cb 100644 (file)
 +                              parts[i].size = fl->next->img->flash_base;
 +                              parts[i].size &= ~(master->erasesize - 1);
 +                              parts[i].size -= parts[i].offset;
-+                      }
 +#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
-+                      else {
++                              nrparts--;
++                      } else {
 +                              i++;
 +                              parts[i].offset = parts[i-1].size + parts[i-1].offset;
 +                              parts[i].size = fl->next->img->flash_base - parts[i].offset;
 +                              parts[i].name = nullname;
-+                      }
  #endif
++                      }
 +              }
                tmp_fl = fl;
                fl = fl->next;
index b473d59..0f15bab 100644 (file)
 +                              parts[i].size = fl->next->img->flash_base;
 +                              parts[i].size &= ~(master->erasesize - 1);
 +                              parts[i].size -= parts[i].offset;
-+                      }
 +#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
-+                      else {
++                              nrparts--;
++                      } else {
 +                              i++;
 +                              parts[i].offset = parts[i-1].size + parts[i-1].offset;
 +                              parts[i].size = fl->next->img->flash_base - parts[i].offset;
 +                              parts[i].name = nullname;
-+                      }
  #endif
++                      }
 +              }
                tmp_fl = fl;
                fl = fl->next;
index b473d59..0f15bab 100644 (file)
 +                              parts[i].size = fl->next->img->flash_base;
 +                              parts[i].size &= ~(master->erasesize - 1);
 +                              parts[i].size -= parts[i].offset;
-+                      }
 +#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
-+                      else {
++                              nrparts--;
++                      } else {
 +                              i++;
 +                              parts[i].offset = parts[i-1].size + parts[i-1].offset;
 +                              parts[i].size = fl->next->img->flash_base - parts[i].offset;
 +                              parts[i].name = nullname;
-+                      }
  #endif
++                      }
 +              }
                tmp_fl = fl;
                fl = fl->next;