瀏覽代碼

Kernel: Mask kernel addresses in perf event streams for non-superuser

We now turn kernel addresses into 0xdeadc0de, same as /proc/PID/stacks/
Andreas Kling 3 年之前
父節點
當前提交
1cdc7aa038
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      Kernel/PerformanceEventBuffer.cpp

+ 4 - 1
Kernel/PerformanceEventBuffer.cpp

@@ -286,7 +286,10 @@ ErrorOr<void> PerformanceEventBuffer::to_json_impl(Serializer& object) const
             seen_first_sample = true;
             seen_first_sample = true;
         auto stack_array = event_object.add_array("stack");
         auto stack_array = event_object.add_array("stack");
         for (size_t j = 0; j < event.stack_size; ++j) {
         for (size_t j = 0; j < event.stack_size; ++j) {
-            stack_array.add(event.stack[j]);
+            auto address = event.stack[j];
+            if (!show_kernel_addresses && !Memory::is_user_address(VirtualAddress { address }))
+                address = 0xdeadc0de;
+            stack_array.add(address);
         }
         }
         stack_array.finish();
         stack_array.finish();
         event_object.finish();
         event_object.finish();