From: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> commit b56f67a6c748bb009f313f91651c8020d2338d63 upstream. fdt_check_header(__dtb_start) will always success because kernel provides a dummy dtb, and by coincidence __dtb_start clashed with entry of this dummy dtb. The consequence is fdt passed from firmware will never be taken. Fix by trying to utilise __dtb_start only when CONFIG_BUILTIN_DTB is enabled. Cc: stable@xxxxxxxxxxxxxxx Fixes: 7b937cc243e5 ("of: Create of_root if no dtb provided by firmware") Signed-off-by: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/loongarch/kernel/setup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/loongarch/kernel/setup.c b/arch/loongarch/kernel/setup.c index 89ad756aeeed..3d048f1be143 100644 --- a/arch/loongarch/kernel/setup.c +++ b/arch/loongarch/kernel/setup.c @@ -282,7 +282,7 @@ static void __init fdt_setup(void) return; /* Prefer to use built-in dtb, checking its legality first. */ - if (!fdt_check_header(__dtb_start)) + if (IS_ENABLED(CONFIG_BUILTIN_DTB) && !fdt_check_header(__dtb_start)) fdt_pointer = __dtb_start; else fdt_pointer = efi_fdt_pointer(); /* Fallback to firmware dtb */ -- 2.45.2 Patches currently in stable-queue which might be from jiaxun.yang@xxxxxxxxxxx are queue-6.9/loongarch-fix-built-in-dtb-detection.patch queue-6.9/loongarch-fix-entry-point-in-kernel-image-header.patch queue-6.9/loongarch-add-all-cpus-enabled-by-fdt-to-numa-node-0.patch queue-6.9/loongarch-override-higher-address-bits-in-jump_virt_addr.patch