mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
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
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -1061,13 +1061,13 @@ EXPORT_SYMBOL_GPL(mtd_get_device_size);
|
||||
static struct mtd_info *mtd_get_partition_by_index(struct mtd_info *mtd, int index)
|
||||
{
|
||||
struct mtd_info *part;
|
||||
int i = 0;
|
||||
int i = 1;
|
||||
|
||||
/* partition indexes starts from 1 */
|
||||
list_for_each_entry(part, &mtd->partitions, node)
|
||||
if (i++ == index)
|
||||
return part;
|
||||
|
||||
debug("Partition with idx=%d not found on MTD device %s\n", index, mtd->name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1084,7 +1084,8 @@ static int __maybe_unused part_get_info_mtd(struct blk_desc *dev_desc, int part_
|
||||
|
||||
part = mtd_get_partition_by_index(master, part_idx);
|
||||
if (!part) {
|
||||
debug("Failed to find partition with idx=%d\n", part_idx);
|
||||
debug("Failed to find partition with idx=%d on MTD device %s\n",
|
||||
part_idx, master->name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user