diff options
author | Kever Yang | 2016-07-29 11:12:18 +0800 |
---|---|---|
committer | Tom Rini | 2016-08-05 20:55:16 -0400 |
commit | c2fdd34569145ad281aeea5ef16fff83d7075830 (patch) | |
tree | 596fddf6ec6cc840d5d092651068c29866aa00a2 | |
parent | 584550d76ad113a072470b806cc785141632b9f5 (diff) |
cmd: gpt: fix the wrong size parse for the last partition
The calculation of "dev_desc->lba - 34 - 1 - offset" is not correct for
size '-', because both fist_usable_lba and last_usable_lba will remain
34 sectors.
We can simply use 0 for size '-' because the part_efi module will decode
the size and auto extend the size to maximum available size.
Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
-rw-r--r-- | cmd/gpt.c | 4 | ||||
-rw-r--r-- | disk/part_efi.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/cmd/gpt.c b/cmd/gpt.c index 3d9706b679c..897596a969f 100644 --- a/cmd/gpt.c +++ b/cmd/gpt.c @@ -298,8 +298,8 @@ static int set_gpt_info(struct blk_desc *dev_desc, if (extract_env(val, &p)) p = val; if ((strcmp(p, "-") == 0)) { - /* remove first usable lba and last block */ - parts[i].size = dev_desc->lba - 34 - 1 - offset; + /* Let part efi module to auto extend the size */ + parts[i].size = 0; } else { size_ll = ustrtoull(p, &p, 0); parts[i].size = lldiv(size_ll, dev_desc->blksz); diff --git a/disk/part_efi.c b/disk/part_efi.c index 01f71bee79e..8d67c09a43a 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -655,6 +655,10 @@ int gpt_verify_partitions(struct blk_desc *dev_desc, (unsigned long long)partitions[i].size); if (le64_to_cpu(gpt_part_size) != partitions[i].size) { + /* We do not check the extend partition size */ + if ((i == parts - 1) && (partitions[i].size == 0)) + continue; + error("Partition %s size: %llu does not match %llu!\n", efi_str, (unsigned long long)gpt_part_size, (unsigned long long)partitions[i].size); |