-
- Downloads
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>
Showing
- arch/x86/entry/entry_32.S 10 additions, 1 deletionarch/x86/entry/entry_32.S
- arch/x86/entry/entry_64.S 10 additions, 1 deletionarch/x86/entry/entry_64.S
- arch/x86/include/asm/irq.h 7 additions, 0 deletionsarch/x86/include/asm/irq.h
- arch/x86/kernel/kprobes/core.c 0 additions, 7 deletionsarch/x86/kernel/kprobes/core.c
- arch/x86/kernel/kprobes/opt.c 1 addition, 3 deletionsarch/x86/kernel/kprobes/opt.c
- arch/x86/kernel/unwind_frame.c 1 addition, 7 deletionsarch/x86/kernel/unwind_frame.c
- arch/x86/kernel/vmlinux.lds.S 0 additions, 1 deletionarch/x86/kernel/vmlinux.lds.S
- arch/x86/mm/pti.c 2 additions, 2 deletionsarch/x86/mm/pti.c
- include/linux/interrupt.h 5 additions, 3 deletionsinclude/linux/interrupt.h
Loading
Please register or sign in to comment