mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +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);
|
printk("%sCall Trace:\n", log_lvl);
|
||||||
|
|
||||||
unwind_start(&state, task, regs, stack);
|
unwind_start(&state, task, regs, stack);
|
||||||
stack = stack ? : get_stack_pointer(task, regs);
|
|
||||||
regs = unwind_get_entry_regs(&state, &partial);
|
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
|
* - hardirq stack
|
||||||
* - entry 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;
|
const char *stack_name;
|
||||||
|
|
||||||
|
stack = PTR_ALIGN(stack, sizeof(long));
|
||||||
|
|
||||||
if (get_stack_info(stack, task, &stack_info, &visit_mask)) {
|
if (get_stack_info(stack, task, &stack_info, &visit_mask)) {
|
||||||
/*
|
/*
|
||||||
* We weren't on a valid stack. It's possible that
|
* 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.
|
* Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler.
|
||||||
* Otherwise, the type of .notes section would become PROGBITS instead of NOTES.
|
* 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 \
|
#define NOTES \
|
||||||
/DISCARD/ : { *(.note.GNU-stack) } \
|
/DISCARD/ : { \
|
||||||
|
*(.note.GNU-stack) \
|
||||||
|
*(.note.gnu.property) \
|
||||||
|
} \
|
||||||
.notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
|
.notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
|
||||||
BOUNDED_SECTION_BY(.note.*, _notes) \
|
BOUNDED_SECTION_BY(.note.*, _notes) \
|
||||||
} NOTES_HEADERS \
|
} NOTES_HEADERS \
|
||||||
|
Reference in New Issue
Block a user