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

Reply via email to