]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
efi: libstub: fix type of fdt 32 and 64bit variables
authorBen Dooks <ben.dooks@codethink.co.uk>
Mon, 9 Mar 2026 17:10:12 +0000 (17:10 +0000)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 11 Mar 2026 18:52:45 +0000 (19:52 +0100)
In update_fdt_memmap() an update_fdt() the fdt values should be
of the fd32_t and fdt64_t types. Make the relevant changes to
remove the following sparse warnings:

drivers/firmware/efi/libstub/fdt.c:97:19: warning: incorrect type in assignment (different base types)
drivers/firmware/efi/libstub/fdt.c:97:19:    expected unsigned long long [usertype] fdt_val64
drivers/firmware/efi/libstub/fdt.c:97:19:    got restricted __be64 [usertype]
drivers/firmware/efi/libstub/fdt.c:157:19: warning: incorrect type in assignment (different base types)
drivers/firmware/efi/libstub/fdt.c:157:19:    expected unsigned long long [usertype] fdt_val64
drivers/firmware/efi/libstub/fdt.c:157:19:    got restricted __be64 [usertype]
drivers/firmware/efi/libstub/fdt.c:163:19: warning: incorrect type in assignment (different base types)
drivers/firmware/efi/libstub/fdt.c:163:19:    expected unsigned int [usertype] fdt_val32
drivers/firmware/efi/libstub/fdt.c:163:19:    got restricted __be32 [usertype]
drivers/firmware/efi/libstub/fdt.c:169:19: warning: incorrect type in assignment (different base types)
drivers/firmware/efi/libstub/fdt.c:169:19:    expected unsigned int [addressable] [usertype] fdt_val32
drivers/firmware/efi/libstub/fdt.c:169:19:    got restricted __be32 [usertype]
drivers/firmware/efi/libstub/fdt.c:175:19: warning: incorrect type in assignment (different base types)
drivers/firmware/efi/libstub/fdt.c:175:19:    expected unsigned int [addressable] [usertype] fdt_val32
drivers/firmware/efi/libstub/fdt.c:175:19:    got restricted __be32 [usertype]

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/fdt.c

index 6a337f1f8787b3bc68f771500f9fcd4b44a7b4f7..23b3543d3041b07a35e658378d3e2d650f3c3bb1 100644 (file)
@@ -32,8 +32,8 @@ static efi_status_t update_fdt(void *orig_fdt, unsigned long orig_fdt_size,
 {
        int node, num_rsv;
        int status;
-       u32 fdt_val32;
-       u64 fdt_val64;
+       fdt32_t fdt_val32;
+       fdt64_t fdt_val64;
 
        /* Do some checks on provided FDT, if it exists: */
        if (orig_fdt) {
@@ -100,13 +100,13 @@ static efi_status_t update_fdt(void *orig_fdt, unsigned long orig_fdt_size,
        if (status)
                goto fdt_set_fail;
 
-       fdt_val64 = U64_MAX; /* placeholder */
+       fdt_val64 = cpu_to_fdt64(U64_MAX); /* placeholder */
 
        status = fdt_setprop_var(fdt, node, "linux,uefi-mmap-start", fdt_val64);
        if (status)
                goto fdt_set_fail;
 
-       fdt_val32 = U32_MAX; /* placeholder */
+       fdt_val32 = cpu_to_fdt32(U32_MAX); /* placeholder */
 
        status = fdt_setprop_var(fdt, node, "linux,uefi-mmap-size", fdt_val32);
        if (status)
@@ -147,8 +147,8 @@ fdt_set_fail:
 static efi_status_t update_fdt_memmap(void *fdt, struct efi_boot_memmap *map)
 {
        int node = fdt_path_offset(fdt, "/chosen");
-       u64 fdt_val64;
-       u32 fdt_val32;
+       fdt64_t fdt_val64;
+       fdt32_t fdt_val32;
        int err;
 
        if (node < 0)