forked from analogdevicesinc/linux
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h>
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/[email protected] Reported-by: Borislav Petkov <[email protected]> Signed-off-by: Masahiro Yamada <[email protected]> Acked-by: Jessica Yu <[email protected]>
- Loading branch information
Showing
24 changed files
with
287 additions
and
225 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#define MODULE_ARCH_VERMAGIC "ARC700" | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#include <linux/stringify.h> | ||
|
||
/* | ||
* Add the ARM architecture version to the version magic string | ||
*/ | ||
#define MODULE_ARCH_VERMAGIC_ARMVSN "ARMv" __stringify(__LINUX_ARM_ARCH__) " " | ||
|
||
/* Add __virt_to_phys patching state as well */ | ||
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT | ||
#define MODULE_ARCH_VERMAGIC_P2V "p2v8 " | ||
#else | ||
#define MODULE_ARCH_VERMAGIC_P2V "" | ||
#endif | ||
|
||
/* Add instruction set architecture tag to distinguish ARM/Thumb kernels */ | ||
#ifdef CONFIG_THUMB2_KERNEL | ||
#define MODULE_ARCH_VERMAGIC_ARMTHUMB "thumb2 " | ||
#else | ||
#define MODULE_ARCH_VERMAGIC_ARMTHUMB "" | ||
#endif | ||
|
||
#define MODULE_ARCH_VERMAGIC \ | ||
MODULE_ARCH_VERMAGIC_ARMVSN \ | ||
MODULE_ARCH_VERMAGIC_ARMTHUMB \ | ||
MODULE_ARCH_VERMAGIC_P2V | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
/* | ||
* Copyright (C) 2012 ARM Ltd. | ||
*/ | ||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#define MODULE_ARCH_VERMAGIC "aarch64" | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* | ||
* Copyright (C) 2003 Hewlett-Packard Co | ||
* David Mosberger-Tang <[email protected]> | ||
*/ | ||
|
||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#include <linux/stringify.h> | ||
|
||
#define MODULE_ARCH_VERMAGIC "ia64" \ | ||
"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__) | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#ifdef CONFIG_CPU_BMIPS | ||
#define MODULE_PROC_FAMILY "BMIPS " | ||
#elif defined CONFIG_CPU_MIPS32_R1 | ||
#define MODULE_PROC_FAMILY "MIPS32_R1 " | ||
#elif defined CONFIG_CPU_MIPS32_R2 | ||
#define MODULE_PROC_FAMILY "MIPS32_R2 " | ||
#elif defined CONFIG_CPU_MIPS32_R6 | ||
#define MODULE_PROC_FAMILY "MIPS32_R6 " | ||
#elif defined CONFIG_CPU_MIPS64_R1 | ||
#define MODULE_PROC_FAMILY "MIPS64_R1 " | ||
#elif defined CONFIG_CPU_MIPS64_R2 | ||
#define MODULE_PROC_FAMILY "MIPS64_R2 " | ||
#elif defined CONFIG_CPU_MIPS64_R6 | ||
#define MODULE_PROC_FAMILY "MIPS64_R6 " | ||
#elif defined CONFIG_CPU_R3000 | ||
#define MODULE_PROC_FAMILY "R3000 " | ||
#elif defined CONFIG_CPU_TX39XX | ||
#define MODULE_PROC_FAMILY "TX39XX " | ||
#elif defined CONFIG_CPU_VR41XX | ||
#define MODULE_PROC_FAMILY "VR41XX " | ||
#elif defined CONFIG_CPU_R4X00 | ||
#define MODULE_PROC_FAMILY "R4X00 " | ||
#elif defined CONFIG_CPU_TX49XX | ||
#define MODULE_PROC_FAMILY "TX49XX " | ||
#elif defined CONFIG_CPU_R5000 | ||
#define MODULE_PROC_FAMILY "R5000 " | ||
#elif defined CONFIG_CPU_R5500 | ||
#define MODULE_PROC_FAMILY "R5500 " | ||
#elif defined CONFIG_CPU_NEVADA | ||
#define MODULE_PROC_FAMILY "NEVADA " | ||
#elif defined CONFIG_CPU_R10000 | ||
#define MODULE_PROC_FAMILY "R10000 " | ||
#elif defined CONFIG_CPU_RM7000 | ||
#define MODULE_PROC_FAMILY "RM7000 " | ||
#elif defined CONFIG_CPU_SB1 | ||
#define MODULE_PROC_FAMILY "SB1 " | ||
#elif defined CONFIG_CPU_LOONGSON32 | ||
#define MODULE_PROC_FAMILY "LOONGSON32 " | ||
#elif defined CONFIG_CPU_LOONGSON2EF | ||
#define MODULE_PROC_FAMILY "LOONGSON2EF " | ||
#elif defined CONFIG_CPU_LOONGSON64 | ||
#define MODULE_PROC_FAMILY "LOONGSON64 " | ||
#elif defined CONFIG_CPU_CAVIUM_OCTEON | ||
#define MODULE_PROC_FAMILY "OCTEON " | ||
#elif defined CONFIG_CPU_XLR | ||
#define MODULE_PROC_FAMILY "XLR " | ||
#elif defined CONFIG_CPU_XLP | ||
#define MODULE_PROC_FAMILY "XLP " | ||
#else | ||
#error MODULE_PROC_FAMILY undefined for your processor configuration | ||
#endif | ||
|
||
#ifdef CONFIG_32BIT | ||
#define MODULE_KERNEL_TYPE "32BIT " | ||
#elif defined CONFIG_64BIT | ||
#define MODULE_KERNEL_TYPE "64BIT " | ||
#endif | ||
|
||
#define MODULE_ARCH_VERMAGIC \ | ||
MODULE_PROC_FAMILY MODULE_KERNEL_TYPE | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
8 changes: 3 additions & 5 deletions
8
arch/nds32/include/asm/module.h → arch/nds32/include/asm/vermagic.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,9 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
// Copyright (C) 2005-2017 Andes Technology Corporation | ||
|
||
#ifndef _ASM_NDS32_MODULE_H | ||
#define _ASM_NDS32_MODULE_H | ||
|
||
#include <asm-generic/module.h> | ||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#define MODULE_ARCH_VERMAGIC "NDS32v3" | ||
|
||
#endif /* _ASM_NDS32_MODULE_H */ | ||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#ifdef CONFIG_MPROFILE_KERNEL | ||
#define MODULE_ARCH_VERMAGIC_FTRACE "mprofile-kernel " | ||
#else | ||
#define MODULE_ARCH_VERMAGIC_FTRACE "" | ||
#endif | ||
|
||
#ifdef CONFIG_RELOCATABLE | ||
#define MODULE_ARCH_VERMAGIC_RELOCATABLE "relocatable " | ||
#else | ||
#define MODULE_ARCH_VERMAGIC_RELOCATABLE "" | ||
#endif | ||
|
||
#define MODULE_ARCH_VERMAGIC \ | ||
MODULE_ARCH_VERMAGIC_FTRACE MODULE_ARCH_VERMAGIC_RELOCATABLE | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* Copyright (C) 2017 Andes Technology Corporation */ | ||
|
||
#ifndef _ASM_VERMAGIC_H | ||
#define _ASM_VERMAGIC_H | ||
|
||
#define MODULE_ARCH_VERMAGIC "riscv" | ||
|
||
#endif /* _ASM_VERMAGIC_H */ |
Oops, something went wrong.