On Sun, Dec 1, 2024 at 8:17 PM Thomas Gleixner tglx@linutronix.de wrote:
The compiler can fully inline the actual handler function of an interrupt entry into the .irqentry.text entry point. If such a function contains an access which has an exception table entry, modpost complains about a section mismatch:
WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ...
The relocation at __ex_table+0x447c references section ".irqentry.text" which is not in the list of authorized sections.
Add .irqentry.text to OTHER_SECTIONS to cure the issue.
Reported-by: Sergey Senozhatsky senozhatsky@chromium.org
I found the context in LKML.
Closes: https://lore.kernel.org/all/20241128111844.GE10431@google.com/
However, is this still relevant to the mainline kernel?
In Linux 5.4.y, I agree this because smp_apic_timer_interrupt() is annotated as __irq_entry:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/x...
In this mainline kernel, DEFINE_IDTENTRY_SYSVEC() expands to a normal .text function which is explicitly annotated 'noinline'.
Signed-off-by: Thomas Gleixner tglx@linutronix.de Cc: stable@vger.kernel.org
scripts/mod/modpost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -785,7 +785,7 @@ static void check_section(const char *mo ".ltext", ".ltext.*" #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ ".fixup", ".entry.text", ".exception.text", \
".coldtext", ".softirqentry.text"
".coldtext", ".softirqentry.text", ".irqentry.text"
#define ALL_TEXT_SECTIONS ".init.text", ".exit.text", \ TEXT_SECTIONS, OTHER_TEXT_SECTIONS
-- Best Regards Masahiro Yamada