Commit 438db5a9 authored by Shmulik Ladkani's avatar Shmulik Ladkani Committed by Artem Bityutskiy

mtd: cmdlinepart: Simplify parse_cmdline_partitions

Simply 'parse_cmdline_partitions': the outer loop iterating over
'partitions' is actually a search loop, it does not execute the inner
loop for each partition, only for the matched partition.

Let's break when search is successful, and move all inner code (relevant
only for the matched partition) outside of the outer loop.

Resulting code is much more readable, and makes the indent level sane.
Signed-off-by: default avatarShmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
parent 6924d99f
...@@ -308,8 +308,18 @@ static int parse_cmdline_partitions(struct mtd_info *master, ...@@ -308,8 +308,18 @@ static int parse_cmdline_partitions(struct mtd_info *master,
return err; return err;
} }
/*
* Search for the partition definition matching master->name.
* If master->name is not set, stop at first partition definition.
*/
for (part = partitions; part; part = part->next) { for (part = partitions; part; part = part->next) {
if ((!mtd_id) || (!strcmp(part->mtd_id, mtd_id))) { if ((!mtd_id) || (!strcmp(part->mtd_id, mtd_id)))
break;
}
if (!part)
return 0;
for (i = 0, offset = 0; i < part->num_parts; i++) { for (i = 0, offset = 0; i < part->num_parts; i++) {
if (part->parts[i].offset == OFFSET_CONTINUOUS) if (part->parts[i].offset == OFFSET_CONTINUOUS)
part->parts[i].offset = offset; part->parts[i].offset = offset;
...@@ -324,8 +334,7 @@ static int parse_cmdline_partitions(struct mtd_info *master, ...@@ -324,8 +334,7 @@ static int parse_cmdline_partitions(struct mtd_info *master,
"%s: skipping zero sized partition\n", "%s: skipping zero sized partition\n",
part->mtd_id); part->mtd_id);
part->num_parts--; part->num_parts--;
memmove(&part->parts[i], memmove(&part->parts[i], &part->parts[i + 1],
&part->parts[i + 1],
sizeof(*part->parts) * (part->num_parts - i)); sizeof(*part->parts) * (part->num_parts - i));
continue; continue;
} }
...@@ -339,17 +348,12 @@ static int parse_cmdline_partitions(struct mtd_info *master, ...@@ -339,17 +348,12 @@ static int parse_cmdline_partitions(struct mtd_info *master,
offset += part->parts[i].size; offset += part->parts[i].size;
} }
*pparts = kmemdup(part->parts, *pparts = kmemdup(part->parts, sizeof(*part->parts) * part->num_parts,
sizeof(*part->parts) * part->num_parts,
GFP_KERNEL); GFP_KERNEL);
if (!*pparts) if (!*pparts)
return -ENOMEM; return -ENOMEM;
return part->num_parts; return part->num_parts;
}
}
return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment