From 7379c589c796ba1d0d16791daaea5d2c02160d56 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 23 May 2020 12:42:27 +0200 Subject: [PATCH] Kernel: Make dump_backtrace_impl() take base pointer as a FlatPtr Since FlatPtr is register width agnostic. :^) --- Kernel/KSyms.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp index 4f1c0d5119..c1c6ddcbd8 100644 --- a/Kernel/KSyms.cpp +++ b/Kernel/KSyms.cpp @@ -115,7 +115,7 @@ static void load_kernel_sybols_from_data(const ByteBuffer& buffer) g_kernel_symbols_available = true; } -NEVER_INLINE void dump_backtrace_impl(u32 ebp, bool use_ksyms) +NEVER_INLINE void dump_backtrace_impl(FlatPtr base_pointer, bool use_ksyms) { SmapDisabler disabler; #if 0 @@ -141,14 +141,14 @@ NEVER_INLINE void dump_backtrace_impl(u32 ebp, bool use_ksyms) RecognizedSymbol recognized_symbols[max_recognized_symbol_count]; size_t recognized_symbol_count = 0; if (use_ksyms) { - for (FlatPtr* stack_ptr = (FlatPtr*)ebp; - (Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (u32*)*stack_ptr) { + for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer; + (Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (FlatPtr*)*stack_ptr) { FlatPtr retaddr = stack_ptr[1]; recognized_symbols[recognized_symbol_count++] = { retaddr, symbolicate_kernel_address(retaddr) }; } } else { - for (FlatPtr* stack_ptr = (FlatPtr*)ebp; - (Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (u32*)*stack_ptr) { + for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer; + (Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (FlatPtr*)*stack_ptr) { FlatPtr retaddr = stack_ptr[1]; dbg() << String::format("%x", retaddr) << " (next: " << String::format("%x", (stack_ptr ? (u32*)*stack_ptr : 0)) << ")"; }