Skip to content

Commit

Permalink
mtd: cmdlinepart: skip partitions truncated to zero
Browse files Browse the repository at this point in the history
Perform flash size truncation before skipping zero sized partition
so that if the result is a zero sized, it will be skipped like the
others.

Signed-off-by: Christopher Cordahi <christophercordahi@nanometrics.ca>
Acked-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
  • Loading branch information
Christopher Cordahi authored and Artem Bityutskiy committed Feb 4, 2013
1 parent e25e0a4 commit ebf4f07
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/mtd/cmdlinepart.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,14 @@ static int parse_cmdline_partitions(struct mtd_info *master,
if (part->parts[i].size == SIZE_REMAINING)
part->parts[i].size = master->size - offset;

if (offset + part->parts[i].size > master->size) {
printk(KERN_WARNING ERRP
"%s: partitioning exceeds flash size, truncating\n",
part->mtd_id);
part->parts[i].size = master->size - offset;
}
offset += part->parts[i].size;

if (part->parts[i].size == 0) {
printk(KERN_WARNING ERRP
"%s: skipping zero sized partition\n",
Expand All @@ -338,16 +346,7 @@ static int parse_cmdline_partitions(struct mtd_info *master,
memmove(&part->parts[i], &part->parts[i + 1],
sizeof(*part->parts) * (part->num_parts - i));
i--;
continue;
}

if (offset + part->parts[i].size > master->size) {
printk(KERN_WARNING ERRP
"%s: partitioning exceeds flash size, truncating\n",
part->mtd_id);
part->parts[i].size = master->size - offset;
}
offset += part->parts[i].size;
}

*pparts = kmemdup(part->parts, sizeof(*part->parts) * part->num_parts,
Expand Down

0 comments on commit ebf4f07

Please sign in to comment.