From 35bb8ab4dbc4287f0823c093fd2d68a9d467f9b4 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Tue, 4 May 2021 00:57:06 -0700 Subject: [PATCH] Kernel: Return one kernel frame from procfs$tid_stack for normal users. Previously we would return a 0xdeadc0de frame for every kernel frame in the real kernel stack when an non super-user issued the request. This isn't useful, and just produces visual clutter in tools which attempt to symbolize stacks. --- Kernel/FileSystem/ProcFS.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index af96914af0..595f90d16a 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -599,9 +599,14 @@ static bool procfs$tid_stack(InodeIdentifier identifier, KBufferBuilder& builder JsonArraySerializer array { builder }; bool show_kernel_addresses = Process::current()->is_superuser(); + bool kernel_address_added = false; for (auto address : Processor::capture_stack_trace(*thread, 1024)) { - if (!show_kernel_addresses && !is_user_address(VirtualAddress { address })) + if (!show_kernel_addresses && !is_user_address(VirtualAddress { address })) { + if (kernel_address_added) + continue; address = 0xdeadc0de; + kernel_address_added = true; + } array.add(JsonValue(address)); }