The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ardb@kernel.org>
To: "Jann Horn" <jannh@google.com>
Cc: "Ard Biesheuvel" <ardb+git@google.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, "Will Deacon" <will@kernel.org>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Ryan Roberts" <ryan.roberts@arm.com>,
	"Anshuman Khandual" <anshuman.khandual@arm.com>,
	"Liz Prucka" <lizprucka@google.com>,
	"Seth Jenkins" <sethjenkins@google.com>,
	"Kees Cook" <kees@kernel.org>, "Mike Rapoport" <rppt@kernel.org>,
	"David Hildenbrand" <david@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH v4 02/15] mm: Make empty_zero_page __ro_after_init
Date: Tue, 12 May 2026 14:56:16 +0200	[thread overview]
Message-ID: <fb5749bb-bc87-4f0b-9ec9-8a1eb7ded3b5@app.fastmail.com> (raw)
In-Reply-To: <CAG48ez2xJwJDgxSH0u2G==9dOQJQxQ7WsQfU14O1H5hEWic1eA@mail.gmail.com>

On Mon, 11 May 2026, at 16:40, Jann Horn wrote:
> On Mon, May 11, 2026 at 10:59 AM Ard Biesheuvel <ardb@kernel.org> wrote:
>> I think we should simply do something along the lines of the below,
>> considering that the size of a data object tends to correlate with
>> its minimum alignment.
>>
>> I do find it rather puzzling that the compiler emits empty_zero_page
>> *after* zero_page_pfn - ideally, we'd combine the below with
>> -fdata-sections so that the linker sees all individual objects, but
>> I suspect that would create some problems elsewhere.
>>
>>
>> --- a/include/asm-generic/vmlinux.lds.h
>> +++ b/include/asm-generic/vmlinux.lds.h
>> @@ -452,7 +452,7 @@
>>  #define RO_AFTER_INIT_DATA                                   \
>>         . = ALIGN(8);                                         \
>>         __start_ro_after_init = .;                            \
>> -       *(.data..ro_after_init)                               \
>> +       *(SORT_BY_ALIGNMENT(.data..ro_after_init))            \
>
> Oh, neat, I didn't realize that's possible. That seems like a nicer
> approach...

Neat but rather ineffective, unfortunately. (I don't see a size
difference with the arm64 defconfig kernel)

Given that empty_zero_page only ever gets its address taken, we
might just move it into the linker script if that requires tweaking
anyway. We can just place it at the start of .rodata, which is
already page aligned on most architectures (and will become page
aligned unless EMPTY_ZERO_PAGE is #define'd by the arch linker
script to something else)


--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -472,6 +472,17 @@
 #endif
 #endif
 
+#ifndef EMPTY_ZERO_PAGE
+#ifndef __HAVE_COLOR_ZERO_PAGE
+#define EMPTY_ZERO_PAGE                                        \
+       . = ALIGN(PAGE_SIZE);                                   \
+       empty_zero_page = .;                                    \
+       . += PAGE_SIZE;
+#else
+#define EMPTY_ZERO_PAGE
+#endif
+#endif
+
 /*
  * Read only Data
  */
@@ -479,6 +490,7 @@
        . = ALIGN((align));                                     \
        .rodata           : AT(ADDR(.rodata) - LOAD_OFFSET) {   \
                __start_rodata = .;                             \
+               EMPTY_ZERO_PAGE                                 \
                *(.rodata) *(.rodata.*) *(.data.rel.ro*)        \
                SCHED_DATA                                      \


  reply	other threads:[~2026-05-12 12:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260427153416.2103979-17-ardb+git@google.com>
     [not found] ` <20260427153416.2103979-19-ardb+git@google.com>
2026-05-08 17:02   ` [PATCH v4 02/15] mm: Make empty_zero_page __ro_after_init Jann Horn
2026-05-11  8:59     ` Ard Biesheuvel
2026-05-11 14:40       ` Jann Horn
2026-05-12 12:56         ` Ard Biesheuvel [this message]
2026-05-11 18:45     ` Kees Cook
2026-05-11 19:01       ` Jann Horn
     [not found]   ` <3d1a6b5c-f3bf-462f-879a-cdb5b60868ac@kernel.org>
2026-05-09 11:04     ` Kiryl Shutsemau
2026-05-11  2:55   ` Feng Tang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fb5749bb-bc87-4f0b-9ec9-8a1eb7ded3b5@app.fastmail.com \
    --to=ardb@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=anshuman.khandual@arm.com \
    --cc=ardb+git@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=david@kernel.org \
    --cc=jannh@google.com \
    --cc=kees@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lizprucka@google.com \
    --cc=mark.rutland@arm.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=sethjenkins@google.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox