Commit f6847807 authored by Helge Deller's avatar Helge Deller Committed by Masahiro Yamada
Browse files

linux/export: Fix alignment for 64-bit ksymtab entries



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: ddb5cdba ("kbuild: generate KSYMTAB entries by modpost")
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 2cc14f52
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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"	\