]> git.baikalelectronics.ru Git - kernel.git/commit
x86/entry: Unbreak __irqentry_text_start/end magic
authorThomas Gleixner <tglx@linutronix.de>
Wed, 10 Jun 2020 06:37:01 +0000 (08:37 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 11 Jun 2020 13:15:29 +0000 (15:15 +0200)
commita859aa7ee4177708d2c58bbf33921f91f964def8
treebf263d8cacf2ada33dea4cbc16ee5fd46b0109d4
parent071802e553f61d8de2f072e906ec6fae2ca05eb5
x86/entry: Unbreak __irqentry_text_start/end magic

The entry rework moved interrupt entry code from the irqentry to the
noinstr section which made the irqentry section empty.

This breaks boundary checks which rely on the __irqentry_text_start/end
markers to find out whether a function in a stack trace is
interrupt/exception entry code. This affects the function graph tracer and
filter_irq_stacks().

As the IDT entry points are all sequentialy emitted this is rather simple
to unbreak by injecting __irqentry_text_start/end as global labels.

To make this work correctly:

  - Remove the IRQENTRY_TEXT section from the x86 linker script
  - Define __irqentry so it breaks the build if it's used
  - Adjust the entry mirroring in PTI
  - Remove the redundant kprobes and unwinder bound checks

Reported-by: Qian Cai <cai@lca.pw>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/entry/entry_32.S
arch/x86/entry/entry_64.S
arch/x86/include/asm/irq.h
arch/x86/kernel/kprobes/core.c
arch/x86/kernel/kprobes/opt.c
arch/x86/kernel/unwind_frame.c
arch/x86/kernel/vmlinux.lds.S
arch/x86/mm/pti.c
include/linux/interrupt.h