From: Helge Deller <del...@gmx.de>

An alignment of 4 bytes is wrong for 64-bit platforms which don't define
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS (which then store 64-bit pointers).
Fix their alignment to 8 bytes.

Signed-off-by: Helge Deller <del...@gmx.de>
---
 include/linux/export-internal.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/linux/export-internal.h b/include/linux/export-internal.h
index 69501e0ec239..cd253eb51d6c 100644
--- a/include/linux/export-internal.h
+++ b/include/linux/export-internal.h
@@ -16,10 +16,13 @@
  * and eliminates the need for absolute relocations that require runtime
  * processing on relocatable kernels.
  */
+#define __KSYM_ALIGN           ".balign 4"
 #define __KSYM_REF(sym)                ".long " #sym "- ."
 #elif defined(CONFIG_64BIT)
+#define __KSYM_ALIGN           ".balign 8"
 #define __KSYM_REF(sym)                ".quad " #sym
 #else
+#define __KSYM_ALIGN           ".balign 4"
 #define __KSYM_REF(sym)                ".long " #sym
 #endif
 
@@ -42,7 +45,7 @@
            "   .asciz \"" ns "\""                                      "\n"    
\
            "   .previous"                                              "\n"    
\
            "   .section \"___ksymtab" sec "+" #name "\", \"a\""        "\n"    
\
-           "   .balign 4"                                              "\n"    
\
+               __KSYM_ALIGN                                            "\n"    
\
            "__ksymtab_" #name ":"                                      "\n"    
\
                __KSYM_REF(sym)                                         "\n"    
\
                __KSYM_REF(__kstrtab_ ##name)                           "\n"    
\
-- 
2.41.0


Reply via email to