mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
Merge tag 'objtool-urgent-2023-05-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull unwinder fixes from Thomas Gleixner: "A set of unwinder and tooling fixes: - Ensure that the stack pointer on x86 is aligned again so that the unwinder does not read past the end of the stack - Discard .note.gnu.property section which has a pointlessly different alignment than the other note sections. That confuses tooling of all sorts including readelf, libbpf and pahole" * tag 'objtool-urgent-2023-05-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/show_trace_log_lvl: Ensure stack pointer is aligned, again vmlinux.lds.h: Discard .note.gnu.property section
This commit is contained in:
@@ -195,7 +195,6 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
||||
printk("%sCall Trace:\n", log_lvl);
|
||||
|
||||
unwind_start(&state, task, regs, stack);
|
||||
stack = stack ? : get_stack_pointer(task, regs);
|
||||
regs = unwind_get_entry_regs(&state, &partial);
|
||||
|
||||
/*
|
||||
@@ -214,9 +213,13 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
||||
* - hardirq stack
|
||||
* - entry stack
|
||||
*/
|
||||
for ( ; stack; stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
|
||||
for (stack = stack ?: get_stack_pointer(task, regs);
|
||||
stack;
|
||||
stack = stack_info.next_sp) {
|
||||
const char *stack_name;
|
||||
|
||||
stack = PTR_ALIGN(stack, sizeof(long));
|
||||
|
||||
if (get_stack_info(stack, task, &stack_info, &visit_mask)) {
|
||||
/*
|
||||
* We weren't on a valid stack. It's possible that
|
||||
|
@@ -891,9 +891,16 @@
|
||||
/*
|
||||
* Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler.
|
||||
* Otherwise, the type of .notes section would become PROGBITS instead of NOTES.
|
||||
*
|
||||
* Also, discard .note.gnu.property, otherwise it forces the notes section to
|
||||
* be 8-byte aligned which causes alignment mismatches with the kernel's custom
|
||||
* 4-byte aligned notes.
|
||||
*/
|
||||
#define NOTES \
|
||||
/DISCARD/ : { *(.note.GNU-stack) } \
|
||||
/DISCARD/ : { \
|
||||
*(.note.GNU-stack) \
|
||||
*(.note.gnu.property) \
|
||||
} \
|
||||
.notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
|
||||
BOUNDED_SECTION_BY(.note.*, _notes) \
|
||||
} NOTES_HEADERS \
|
||||
|
Reference in New Issue
Block a user