efi_loader: partition numbers are hexadecimal
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 25 May 2021 16:00:13 +0000 (18:00 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 8 Jun 2021 22:16:39 +0000 (00:16 +0200)
If we want to address partition 15 of virtio block device 11, we have to
write:

virtio b:f

When calling sprintf() we must use %x for the device and partition numbers.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_disk.c
lib/efi_loader/efi_var_file.c

index 307d5d7..988907e 100644 (file)
@@ -476,7 +476,7 @@ static efi_status_t efi_disk_add_dev(
                        efi_system_partition.if_type = desc->if_type;
                        efi_system_partition.devnum = desc->devnum;
                        efi_system_partition.part = part;
-                       EFI_PRINT("EFI system partition: %s %d:%d\n",
+                       EFI_PRINT("EFI system partition: %s %x:%x\n",
                                  blk_get_if_type_name(desc->if_type),
                                  desc->devnum, part);
                }
@@ -521,7 +521,7 @@ int efi_disk_create_partitions(efi_handle_t parent, struct blk_desc *desc,
 
                if (part_get_info(desc, part, &info))
                        continue;
-               snprintf(devname, sizeof(devname), "%s:%d", pdevname,
+               snprintf(devname, sizeof(devname), "%s:%x", pdevname,
                         part);
                ret = efi_disk_add_dev(parent, dp, if_typename, desc, diskid,
                                       &info, part, NULL);
index b171d2d..de076b8 100644 (file)
@@ -35,7 +35,7 @@ static efi_status_t __maybe_unused efi_set_blk_dev_to_system_partition(void)
                log_err("No EFI system partition\n");
                return EFI_DEVICE_ERROR;
        }
-       snprintf(part_str, PART_STR_LEN, "%u:%u",
+       snprintf(part_str, PART_STR_LEN, "%x:%x",
                 efi_system_partition.devnum, efi_system_partition.part);
        r = fs_set_blk_dev(blk_get_if_type_name(efi_system_partition.if_type),
                           part_str, FS_TYPE_ANY);