modpost: Add .irqentry.text to OTHER_SECTIONS
commit 7912405643a14b527cd4a4f33c1d4392da900888 upstream. 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> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org # needed for linux-5.4-y Link: https://lore.kernel.org/all/20241128111844.GE10431@google.com/ Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> [ bump the size of good_tosec[] to prevent overflow - gregkh ] Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f0cbcf1f77
commit
c23abcb314
@ -829,7 +829,7 @@ static void check_section(const char *modname, struct elf_info *elf,
|
|||||||
".ltext", ".ltext.*"
|
".ltext", ".ltext.*"
|
||||||
#define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \
|
#define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \
|
||||||
".fixup", ".entry.text", ".exception.text", \
|
".fixup", ".entry.text", ".exception.text", \
|
||||||
".coldtext", ".softirqentry.text"
|
".coldtext", ".softirqentry.text", ".irqentry.text"
|
||||||
|
|
||||||
#define INIT_SECTIONS ".init.*"
|
#define INIT_SECTIONS ".init.*"
|
||||||
#define MEM_INIT_SECTIONS ".meminit.*"
|
#define MEM_INIT_SECTIONS ".meminit.*"
|
||||||
@ -889,7 +889,7 @@ enum mismatch {
|
|||||||
struct sectioncheck {
|
struct sectioncheck {
|
||||||
const char *fromsec[20];
|
const char *fromsec[20];
|
||||||
const char *bad_tosec[20];
|
const char *bad_tosec[20];
|
||||||
const char *good_tosec[20];
|
const char *good_tosec[21];
|
||||||
enum mismatch mismatch;
|
enum mismatch mismatch;
|
||||||
void (*handler)(const char *modname, struct elf_info *elf,
|
void (*handler)(const char *modname, struct elf_info *elf,
|
||||||
const struct sectioncheck* const mismatch,
|
const struct sectioncheck* const mismatch,
|
||||||
|
Loading…
Reference in New Issue
Block a user