Skip to content

Commit

Permalink
Kernel: Avoid repeated memory zeroing while generating coredumps
Browse files Browse the repository at this point in the history
Reuse the same buffer-full-of-zeroes for every un-paged-in page that we
dump out.
  • Loading branch information
awesomekling committed Nov 21, 2021
1 parent e1779b0 commit c0deafe
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Kernel/Coredump.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ ErrorOr<void> Coredump::write_program_headers(size_t notes_size)

ErrorOr<void> Coredump::write_regions()
{
u8 zero_buffer[PAGE_SIZE] = {};

for (auto& region : m_process->address_space().regions()) {
VERIFY(!region->is_kernel());

Expand All @@ -180,8 +182,6 @@ ErrorOr<void> 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<UserOrKernelBuffer> {
if (page)
return UserOrKernelBuffer::for_user_buffer(reinterpret_cast<uint8_t*>((region->vaddr().as_ptr() + (i * PAGE_SIZE))), PAGE_SIZE);
Expand Down

0 comments on commit c0deafe

Please sign in to comment.