[U-Boot] [PATCH v2] cmd: gpt: fix the wrong size parse for the last partition
Kever Yang
kever.yang at rock-chips.com
Thu Aug 4 05:37:50 CEST 2016
Hi Michael,
Do you think this patch is necessary?
Thanks,
-Kever
On 07/29/2016 11:12 AM, Kever Yang wrote:
> 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 at rock-chips.com>
> ---
>
> Changes in v2:
> - fix gpt verify error, do not check the extend partition size
>
> cmd/gpt.c | 4 ++--
> disk/part_efi.c | 4 ++++
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/cmd/gpt.c b/cmd/gpt.c
> index 3d9706b..897596a 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 0af1e92..4566cab 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);
More information about the U-Boot
mailing list