]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
cmd: gpt: fix partition search boundaries
authorMikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Mon, 19 Jan 2026 22:33:04 +0000 (01:33 +0300)
committerTom Rini <trini@konsulko.com>
Wed, 4 Feb 2026 16:30:55 +0000 (10:30 -0600)
GPT disk partition with max available number (ex: /dev/mmcblk128) can't
be used from U-Boot. Here is an example:

  => mmc part

  Partition Map for mmc device 0  --   Partition Type: EFI

  Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
  1 0x00001000 0x000013ff "env1"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 5452574f-2211-4433-5566-778899aabb02
  2 0x00001400 0x000017ff "env2"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 5452574f-2211-4433-5566-778899aabb03
  .................
  8 0x00158000 0x0034bfff "apps"
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 5452574f-2211-4433-5566-778899aabb09
  128 0x00000420 0x00000fff "fip"
attrs: 0x0000000000000000
type: c12a7328-f81f-11d2-ba4b-00a0c93ec93b
guid: 5452574f-2211-4433-5566-778899aabb01

  => gpt setenv mmc 0 fip
  error!
  => gpt setenv mmc 0 apps
  success!

The error is caused by invalid boundary checks. This patch fixes an
issue.

Fixes: 12fc1f3bb223 ("cmd: gpt: add eMMC and GPT support")
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Acked-by: Quentin Schulz <quentin.schulz@cherry.de>
cmd/gpt.c

index 84221881c39cf297498722ae2752a9171faa44d2..205f696c80727935252909dc6ede65b0c4df02f2 100644 (file)
--- a/cmd/gpt.c
+++ b/cmd/gpt.c
@@ -723,7 +723,7 @@ static int gpt_enumerate(struct blk_desc *desc)
                if (part_drv->test(desc))
                        continue;
 
-               for (i = 1; i < part_drv->max_entries; i++) {
+               for (i = 1; i <= part_drv->max_entries; i++) {
                        ret = part_driver_get_info(part_drv, desc, i, &pinfo);
                        if (ret)
                                continue;
@@ -819,7 +819,7 @@ static int gpt_setenv(struct blk_desc *desc, const char *name)
                struct disk_partition pinfo;
                int i;
 
-               for (i = 1; i < part_drv->max_entries; i++) {
+               for (i = 1; i <= part_drv->max_entries; i++) {
                        ret = part_driver_get_info(part_drv, desc, i, &pinfo);
                        if (ret)
                                continue;