• Masahiro Yamada's avatar
    arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h> · 62d0fd59
    Masahiro Yamada authored
    As the bug report [1] pointed out, <linux/vermagic.h> must be included
    after <linux/module.h>.
    
    I believe we should not impose any include order restriction. We often
    sort include directives alphabetically, but it is just coding style
    convention. Technically, we can include header files in any order by
    making every header self-contained.
    
    Currently, arch-specific MODULE_ARCH_VERMAGIC is defined in
    <asm/module.h>, which is not included from <linux/vermagic.h>.
    
    Hence, the straight-forward fix-up would be as follows:
    
    |--- a/include/linux/vermagic.h
    |+++ b/include/linux/vermagic.h
    |@@ -1,5 +1,6 @@
    | /* SPDX-License-Identifier: GPL-2.0 */
    | #include <generated/utsrelease.h>
    |+#include <linux/module.h>
    |
    | /* Simply sanity version stamp for modules. */
    | #ifdef CONFIG_SMP
    
    This works enough, but for further cleanups, I split MODULE_ARCH_VERMAGIC
    definitions into <asm/vermagic.h>.
    
    With this, <linux/module.h> and <linux/vermagic.h> will be orthogonal,
    and the location of MODULE_ARCH_VERMAGIC definitions will be consistent.
    
    For arc and ia64, MODULE_PROC_FAMILY is only used for defining
    MODULE_ARCH_VERMAGIC. I squashed it.
    
    For hexagon, nds32, and xtensa, I removed <asm/modules.h> entirely
    because they contained nothing but MODULE_ARCH_VERMAGIC definition.
    Kbuild will automatically generate <asm/modules.h> at build-time,
    wrapping <asm-generic/module.h>.
    
    [1] https://lore.kernel.org/lkml/20200411155623.GA22175@zn.tnicReported-by: default avatarBorislav Petkov <bp@suse.de>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Acked-by: default avatarJessica Yu <jeyu@kernel.org>
    62d0fd59
vermagic.h 299 Bytes