"Das U-Boot" Source Tree
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge patch series "part: fix partition searching"

Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> says:

It was noted that a GPT partition with the maximum available partition
number (ex: /dev/mmcblk128) can't be read/write from U-Boot using
read/write commands. Futher investigation shows that the problem is
deeper.

This set of patches fixes uncovered issues.

Link: https://lore.kernel.org/r/20260119223305.3022690-1-mikhail.kshevetskiy@iopsys.eu

Tom Rini e7a21a98 eb1562cc

+8 -7
+2 -2
cmd/gpt.c
··· 723 723 if (part_drv->test(desc)) 724 724 continue; 725 725 726 - for (i = 1; i < part_drv->max_entries; i++) { 726 + for (i = 1; i <= part_drv->max_entries; i++) { 727 727 ret = part_driver_get_info(part_drv, desc, i, &pinfo); 728 728 if (ret) 729 729 continue; ··· 819 819 struct disk_partition pinfo; 820 820 int i; 821 821 822 - for (i = 1; i < part_drv->max_entries; i++) { 822 + for (i = 1; i <= part_drv->max_entries; i++) { 823 823 ret = part_driver_get_info(part_drv, desc, i, &pinfo); 824 824 if (ret) 825 825 continue;
+2 -2
disk/part.c
··· 674 674 if (!part_drv) 675 675 return -1; 676 676 677 - for (i = 1; i < part_drv->max_entries; i++) { 677 + for (i = 1; i <= part_drv->max_entries; i++) { 678 678 ret = part_driver_get_info(part_drv, desc, i, info); 679 679 if (ret != 0) { 680 680 /* -ENOSYS means no ->get_info method. */ ··· 709 709 if (!part_drv) 710 710 return -1; 711 711 712 - for (i = 1; i < part_drv->max_entries; i++) { 712 + for (i = 1; i <= part_drv->max_entries; i++) { 713 713 ret = part_driver_get_info(part_drv, desc, i, info); 714 714 if (ret != 0) { 715 715 /* -ENOSYS means no ->get_info method. */
+4 -3
drivers/mtd/mtdpart.c
··· 1061 1061 static struct mtd_info *mtd_get_partition_by_index(struct mtd_info *mtd, int index) 1062 1062 { 1063 1063 struct mtd_info *part; 1064 - int i = 0; 1064 + int i = 1; 1065 1065 1066 + /* partition indexes starts from 1 */ 1066 1067 list_for_each_entry(part, &mtd->partitions, node) 1067 1068 if (i++ == index) 1068 1069 return part; 1069 1070 1070 - debug("Partition with idx=%d not found on MTD device %s\n", index, mtd->name); 1071 1071 return NULL; 1072 1072 } 1073 1073 ··· 1084 1084 1085 1085 part = mtd_get_partition_by_index(master, part_idx); 1086 1086 if (!part) { 1087 - debug("Failed to find partition with idx=%d\n", part_idx); 1087 + debug("Failed to find partition with idx=%d on MTD device %s\n", 1088 + part_idx, master->name); 1088 1089 return -EINVAL; 1089 1090 } 1090 1091