Browse Source

efi_loader: correctly render CD-ROM device path nodes

Correct the name of the partition size component in struct
efi_device_path_cdrom_path.

Render entry, start, and size when converting a CD-ROM device path node to
text.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Heinrich Schuchardt 4 years ago
parent
commit
d0384d5160
3 changed files with 4 additions and 3 deletions
  1. 1 1
      include/efi_api.h
  2. 1 1
      lib/efi_loader/efi_device_path.c
  3. 2 1
      lib/efi_loader/efi_device_path_to_text.c

+ 1 - 1
include/efi_api.h

@@ -483,7 +483,7 @@ struct efi_device_path_cdrom_path {
 	struct efi_device_path dp;
 	u32 boot_entry;
 	u64 partition_start;
-	u64 partition_end;
+	u64 partition_size;
 } __packed;
 
 struct efi_device_path_file_path {

+ 1 - 1
lib/efi_loader/efi_device_path.c

@@ -665,7 +665,7 @@ static void *dp_part_node(void *buf, struct blk_desc *desc, int part)
 		cddp->dp.sub_type = DEVICE_PATH_SUB_TYPE_CDROM_PATH;
 		cddp->dp.length = sizeof(*cddp);
 		cddp->partition_start = info.start;
-		cddp->partition_end = info.size;
+		cddp->partition_size = info.size;
 
 		buf = &cddp[1];
 	} else {

+ 2 - 1
lib/efi_loader/efi_device_path_to_text.c

@@ -214,7 +214,8 @@ static char *dp_media(char *s, struct efi_device_path *dp)
 	case DEVICE_PATH_SUB_TYPE_CDROM_PATH: {
 		struct efi_device_path_cdrom_path *cddp =
 			(struct efi_device_path_cdrom_path *)dp;
-		s += sprintf(s, "CDROM(0x%x)", cddp->boot_entry);
+		s += sprintf(s, "CDROM(%u,0x%llx,0x%llx)", cddp->boot_entry,
+			     cddp->partition_start, cddp->partition_size);
 		break;
 	}
 	case DEVICE_PATH_SUB_TYPE_FILE_PATH: {