]> Gentwo Git Trees - linux/.git/commitdiff
of/fdt: Fix the len check in early_init_dt_check_for_elfcorehdr()
authorYuntao Wang <yuntao.wang@linux.dev>
Sat, 15 Nov 2025 13:47:47 +0000 (21:47 +0800)
committerRob Herring (Arm) <robh@kernel.org>
Thu, 20 Nov 2025 14:32:48 +0000 (08:32 -0600)
The len value is in bytes, while `dt_root_addr_cells + dt_root_size_cells`
is in cells (4 bytes per cell). Comparing them directly is incorrect.

Use a helper function to simplify the code and address this issue.

Fixes: f7e7ce93aac1 ("of: fdt: Add generic support for handling elf core headers property")
Fixes: e62aaeac426ab1dd ("arm64: kdump: provide /proc/vmcore file")
Signed-off-by: Yuntao Wang <yuntao.wang@linux.dev>
Link: https://patch.msgid.link/20251115134753.179931-3-yuntao.wang@linux.dev
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
drivers/of/fdt.c

index 0c18bdefbbeea4fea79951ef9c353fe16c3c7328..b45f60dccd7cf06a04d597f2f4f7e7c32f583253 100644 (file)
@@ -853,21 +853,15 @@ static void __init early_init_dt_check_for_initrd(unsigned long node)
  */
 static void __init early_init_dt_check_for_elfcorehdr(unsigned long node)
 {
-       const __be32 *prop;
-       int len;
-
        if (!IS_ENABLED(CONFIG_CRASH_DUMP))
                return;
 
        pr_debug("Looking for elfcorehdr property... ");
 
-       prop = of_get_flat_dt_prop(node, "linux,elfcorehdr", &len);
-       if (!prop || (len < (dt_root_addr_cells + dt_root_size_cells)))
+       if (!of_flat_dt_get_addr_size(node, "linux,elfcorehdr",
+                                     &elfcorehdr_addr, &elfcorehdr_size))
                return;
 
-       elfcorehdr_addr = dt_mem_next_cell(dt_root_addr_cells, &prop);
-       elfcorehdr_size = dt_mem_next_cell(dt_root_size_cells, &prop);
-
        pr_debug("elfcorehdr_start=0x%llx elfcorehdr_size=0x%llx\n",
                 elfcorehdr_addr, elfcorehdr_size);
 }