]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
bootstd: cros: store partition type in an efi_guid_t
authorVincent Stehlé <vincent.stehle@arm.com>
Wed, 3 Jul 2024 11:37:56 +0000 (13:37 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 16 Jul 2024 23:09:33 +0000 (17:09 -0600)
The scan_part() function uses a struct uuid to store the little-endian
partition type GUID, but this structure should be used only to contain a
big-endian UUID. Use an efi_guid_t instead and use guidcmp() for the
comparison.

Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
boot/bootmeth_cros.c

index 645b8bed10202a9171dd5bbeb8d8037524c76924..676f550ca257801c549506fcd3e79888b51e62ad 100644 (file)
@@ -147,7 +147,7 @@ static int scan_part(struct udevice *blk, int partnum,
 {
        struct blk_desc *desc = dev_get_uclass_plat(blk);
        struct vb2_keyblock *hdr;
-       struct uuid type;
+       efi_guid_t type;
        ulong num_blks;
        int ret;
 
@@ -160,10 +160,10 @@ static int scan_part(struct udevice *blk, int partnum,
 
        /* Check for kernel partition type */
        log_debug("part %x: type=%s\n", partnum, info->type_guid);
-       if (uuid_str_to_bin(info->type_guid, (u8 *)&type, UUID_STR_FORMAT_GUID))
+       if (uuid_str_to_bin(info->type_guid, type.b, UUID_STR_FORMAT_GUID))
                return log_msg_ret("typ", -EINVAL);
 
-       if (memcmp(&cros_kern_type, &type, sizeof(type)))
+       if (guidcmp(&cros_kern_type, &type))
                return log_msg_ret("typ", -ENOEXEC);
 
        /* Make a buffer for the header information */