linux/export: Fix alignment for 64-bit ksymtab entries
authorHelge Deller <deller@gmx.de>
Wed, 22 Nov 2023 22:18:11 +0000 (23:18 +0100)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 23 Dec 2023 14:24:03 +0000 (23:24 +0900)
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.

Fixes: ddb5cdbafaaa ("kbuild: generate KSYMTAB entries by modpost")
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
include/linux/export-internal.h

index 69501e0..cd253eb 100644 (file)
  * 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"    \