From c0deafe457450b896a3951d0ce40bd35a72e750e Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 21 Nov 2021 12:28:01 +0100 Subject: [PATCH] Kernel: Avoid repeated memory zeroing while generating coredumps Reuse the same buffer-full-of-zeroes for every un-paged-in page that we dump out. --- Kernel/Coredump.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Coredump.cpp b/Kernel/Coredump.cpp index 85fda720fd4..d2014a72f13 100644 --- a/Kernel/Coredump.cpp +++ b/Kernel/Coredump.cpp @@ -167,6 +167,8 @@ ErrorOr Coredump::write_program_headers(size_t notes_size) ErrorOr Coredump::write_regions() { + u8 zero_buffer[PAGE_SIZE] = {}; + for (auto& region : m_process->address_space().regions()) { VERIFY(!region->is_kernel()); @@ -180,8 +182,6 @@ ErrorOr Coredump::write_regions() for (size_t i = 0; i < region->page_count(); i++) { auto* page = region->physical_page(i); - - uint8_t zero_buffer[PAGE_SIZE] = {}; auto src_buffer = [&]() -> ErrorOr { if (page) return UserOrKernelBuffer::for_user_buffer(reinterpret_cast((region->vaddr().as_ptr() + (i * PAGE_SIZE))), PAGE_SIZE);