Thread (38 messages) 38 messages, 3 authors, 2026-01-27

Re: [PATCH v2 01/10] arm64: Move the zero page to rodata

From: Ard Biesheuvel <ardb@kernel.org>
Date: 2026-01-27 10:51:03
Also in: linux-hardening, lkml

On Tue, 27 Jan 2026 at 11:04, Ryan Roberts [off-list ref] wrote:
On 27/01/2026 09:49, Ard Biesheuvel wrote:
quoted
On Tue, 27 Jan 2026 at 10:34, Ryan Roberts [off-list ref] wrote:
quoted
On 26/01/2026 09:26, Ard Biesheuvel wrote:
quoted
From: Ard Biesheuvel <ardb@kernel.org>

The zero page should contain only zero bytes, and so mapping it
read-write is unnecessary. Combine it with reserved_pg_dir, which lives
in the read-only region of the kernel, and already serves a similar
purpose.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/arm64/kernel/vmlinux.lds.S | 1 +
 arch/arm64/mm/mmu.c             | 3 +--
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
index ad6133b89e7a..b2a093f5b3fc 100644
--- a/arch/arm64/kernel/vmlinux.lds.S
+++ b/arch/arm64/kernel/vmlinux.lds.S
@@ -229,6 +229,7 @@ SECTIONS
 #endif

      reserved_pg_dir = .;
+     empty_zero_page = .;
      . += PAGE_SIZE;

      swapper_pg_dir = .;
Isn't there a magic macro for getting from swapper to reserved? That will need
updating?
Why? This just adds an alias to refer to the same allocation.
Oh yes, sorry I completely missed that. And you've even stated it in the commit
log...

I'm struggling to see where this gets zeroed though? I assume it must be zeroed
before the old empty_zero_page would have been so everything works fine?
It is statically zero initialized in the image.
Assuming yes, then:

Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
Thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help