summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--disk/part.c8
-rw-r--r--disk/part_efi.c9
-rw-r--r--include/part.h28
3 files changed, 35 insertions, 10 deletions
diff --git a/disk/part.c b/disk/part.c
index 91c6ac42cc8..72241b7b232 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -370,9 +370,7 @@ int part_get_info_by_type(struct blk_desc *desc, int part, int part_type,
if (blk_enabled()) {
/* The common case is no UUID support */
disk_partition_clr_uuid(info);
-#ifdef CONFIG_PARTITION_TYPE_GUID
- info->type_guid[0] = 0;
-#endif
+ disk_partition_clr_type_guid(info);
if (part_type == PART_TYPE_UNKNOWN) {
drv = part_driver_lookup_type(desc);
@@ -415,9 +413,7 @@ int part_get_info_whole_disk(struct blk_desc *desc,
strcpy((char *)info->type, BOOT_PART_TYPE);
strcpy((char *)info->name, "Whole Disk");
disk_partition_clr_uuid(info);
-#ifdef CONFIG_PARTITION_TYPE_GUID
- info->type_guid[0] = 0;
-#endif
+ disk_partition_clr_type_guid(info);
return 0;
}
diff --git a/disk/part_efi.c b/disk/part_efi.c
index a6f7375cd38..20867521382 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -294,10 +294,11 @@ int part_get_info_efi(struct blk_desc *desc, int part,
(char *)disk_partition_uuid(info),
UUID_STR_FORMAT_GUID);
}
-#ifdef CONFIG_PARTITION_TYPE_GUID
- uuid_bin_to_str(gpt_pte[part - 1].partition_type_guid.b,
- info->type_guid, UUID_STR_FORMAT_GUID);
-#endif
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID)) {
+ uuid_bin_to_str(gpt_pte[part - 1].partition_type_guid.b,
+ (char *)disk_partition_type_uuid(info),
+ UUID_STR_FORMAT_GUID);
+ }
log_debug("start 0x" LBAF ", size 0x" LBAF ", name %s\n", info->start,
info->size, info->name);
diff --git a/include/part.h b/include/part.h
index 8e5e543c56e..5cf1c5ec96f 100644
--- a/include/part.h
+++ b/include/part.h
@@ -107,6 +107,34 @@ static inline void disk_partition_clr_uuid(struct disk_partition *info)
#endif
}
+/* Accessors for struct disk_partition field ->type_guid */
+extern char *__invalid_use_of_disk_partition_type_uuid;
+
+static inline const
+char *disk_partition_type_uuid(const struct disk_partition *info)
+{
+#ifdef CONFIG_PARTITION_TYPE_GUID
+ return info->type_guid;
+#else
+ return __invalid_use_of_disk_partition_type_uuid;
+#endif
+}
+
+static inline void disk_partition_set_type_guid(struct disk_partition *info,
+ const char *val)
+{
+#ifdef CONFIG_PARTITION_TYPE_GUID
+ strlcpy(info->type_guid, val, UUID_STR_LEN + 1);
+#endif
+}
+
+static inline void disk_partition_clr_type_guid(struct disk_partition *info)
+{
+#ifdef CONFIG_PARTITION_TYPE_GUID
+ *info->type_guid = '\0';
+#endif
+}
+
struct disk_part {
int partnum;
struct disk_partition gpt_part_info;