Hi Mikhail On Mon, Jan 19, 2026 at 11:33 PM Mikhail Kshevetskiy <[email protected]> wrote: > > GPT disk partition with max available number (ex: /dev/mmcblk128) can't > be read/write from U-Boot using read/write command. 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 > > => read mmc 0#fip ${loadaddr} 0 4 > Could not find "fip" partition > ** Bad device specification mmc 0#fip ** > ** Bad device specification mmc 0#fip ** > Couldn't find partition mmc 0#fip > > The error is caused by invalid boundary checks. This patch fixes an > issue. > > Fixes: 43fd4bcefd4e ("disk: part: implement generic function > part_get_info_by_uuid()") > Fixes: 56670d6fb83f ("disk: part: use common api to lookup part driver") > Signed-off-by: Mikhail Kshevetskiy <[email protected]> > Acked-by: Quentin Schulz <[email protected]> > --- > disk/part.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/disk/part.c b/disk/part.c > index 49a0fca6b89..4923dc44593 100644 > --- a/disk/part.c > +++ b/disk/part.c > @@ -674,7 +674,7 @@ int part_get_info_by_name(struct blk_desc *desc, const > char *name, > if (!part_drv) > return -1; > > - 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, info); > if (ret != 0) { > /* -ENOSYS means no ->get_info method. */ > @@ -709,7 +709,7 @@ int part_get_info_by_uuid(struct blk_desc *desc, const > char *uuid, > if (!part_drv) > return -1; > > - 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, info); > if (ret != 0) { > /* -ENOSYS means no ->get_info method. */ > --
Perfectly agree on the fix but still I prefer to think that things start from 0 and not from 1 and move up to < part_drv->max_entries. Do you consider the amount of change needed to make a more common pattern? Otherwise: Reviewed-By: Michael Trimarchi <[email protected]> > 2.51.0 > -- Michael Nazzareno Trimarchi Co-Founder & Chief Executive Officer M. +39 347 913 2170 [email protected] __________________________________ Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 [email protected] www.amarulasolutions.com

