From: Omar Sandoval <osan...@fb.com>

This is preparation for allowing CRASH_CORE to be enabled for any
architecture.

swapper_pg_dir is always either an array or a macro expanding to NULL.
In the latter case, VMCOREINFO_SYMBOL() won't work, as it tries to take
the address of the given symbol:

        #define VMCOREINFO_SYMBOL(name) \
                vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned 
long)&name)

Instead, use VMCOREINFO_SYMBOL_ARRAY(), which uses the value:

        #define VMCOREINFO_SYMBOL_ARRAY(name) \
                vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned 
long)name)

This is the same thing for the array case but isn't an error for the
macro case.

Signed-off-by: Omar Sandoval <osan...@fb.com>
---
 kernel/crash_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index b66aced5e8c2..e7b4025c7b24 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -401,7 +401,7 @@ static int __init crash_save_vmcoreinfo_init(void)
        VMCOREINFO_SYMBOL(init_uts_ns);
        VMCOREINFO_SYMBOL(node_online_map);
 #ifdef CONFIG_MMU
-       VMCOREINFO_SYMBOL(swapper_pg_dir);
+       VMCOREINFO_SYMBOL_ARRAY(swapper_pg_dir);
 #endif
        VMCOREINFO_SYMBOL(_stext);
        VMCOREINFO_SYMBOL(vmap_area_list);
-- 
2.18.0

Reply via email to