public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org, will@kernel.org,
	 catalin.marinas@arm.com, mark.rutland@arm.com,
	 Ard Biesheuvel <ardb@kernel.org>,
	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>,
	 linux-hardening@vger.kernel.org
Subject: [PATCH v3 11/13] arm64: mm: Don't abuse memblock NOMAP to check for overlaps
Date: Fri, 20 Mar 2026 15:59:46 +0100	[thread overview]
Message-ID: <20260320145934.2349881-26-ardb+git@google.com> (raw)
In-Reply-To: <20260320145934.2349881-15-ardb+git@google.com>

From: Ard Biesheuvel <ardb@kernel.org>

Now that the DRAM mapping routines respect existing table mappings and
contiguous block and page mappings, it is no longer needed to fiddle
with the memblock tables to set and clear the NOMAP attribute. Instead,
map the kernel text and rodata alias first, so that they will not be
added later when mapping the memblocks.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/arm64/mm/mmu.c | 23 ++++++--------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index b52254790fda..34ad45a2d95f 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1128,12 +1128,14 @@ static void __init map_mem(void)
 		flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
 
 	/*
-	 * Take care not to create a writable alias for the
-	 * read-only text and rodata sections of the kernel image.
-	 * So temporarily mark them as NOMAP to skip mappings in
-	 * the following for-loop
+	 * Map the linear alias of the [_text, __init_begin) interval
+	 * as non-executable now, and remove the write permission in
+	 * mark_linear_text_alias_ro() above (which will be called after
+	 * alternative patching has completed). This makes the contents
+	 * of the region accessible to subsystems such as hibernate,
+	 * but protects it from inadvertent modification or execution.
 	 */
-	memblock_mark_nomap(kernel_start, kernel_end - kernel_start);
+	__map_memblock(kernel_start, kernel_end, PAGE_KERNEL, flags);
 
 	/* map all the memory banks */
 	for_each_mem_range(i, &start, &end) {
@@ -1145,17 +1147,6 @@ static void __init map_mem(void)
 		__map_memblock(start, end, pgprot_tagged(PAGE_KERNEL),
 			       flags);
 	}
-
-	/*
-	 * Map the linear alias of the [_text, __init_begin) interval
-	 * as non-executable now, and remove the write permission in
-	 * mark_linear_text_alias_ro() below (which will be called after
-	 * alternative patching has completed). This makes the contents
-	 * of the region accessible to subsystems such as hibernate,
-	 * but protects it from inadvertent modification or execution.
-	 */
-	__map_memblock(kernel_start, kernel_end, PAGE_KERNEL, 0);
-	memblock_clear_nomap(kernel_start, kernel_end - kernel_start);
 }
 
 void mark_rodata_ro(void)
-- 
2.53.0.959.g497ff81fa9-goog



  parent reply	other threads:[~2026-03-20 15:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-20 14:59 [PATCH v3 00/13] arm64: Unmap linear alias of kernel data/bss Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 01/13] arm64: Move the zero page to rodata Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 02/13] arm64: mm: Preserve existing table mappings when mapping DRAM Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 03/13] arm64: mm: Preserve non-contiguous descriptors " Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 04/13] arm64: mm: Remove bogus stop condition from map_mem() loop Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 05/13] arm64: mm: Drop redundant pgd_t* argument from map_mem() Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 06/13] arm64: mm: Permit contiguous descriptors to be rewritten Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 07/13] arm64: mm: Use hierarchical XN mapping for the fixmap Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 08/13] arm64: kfence: Avoid NOMAP tricks when mapping the early pool Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 09/13] arm64: mm: Permit contiguous attribute for preliminary mappings Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 10/13] arm64: Move fixmap page tables to end of kernel image Ard Biesheuvel
2026-03-20 14:59 ` Ard Biesheuvel [this message]
2026-03-20 14:59 ` [PATCH v3 12/13] arm64: mm: Map the kernel data/bss read-only in the linear map Ard Biesheuvel
2026-03-20 14:59 ` [PATCH v3 13/13] arm64: mm: Unmap kernel data/bss entirely from " Ard Biesheuvel

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=20260320145934.2349881-26-ardb+git@google.com \
    --to=ardb+git@google.com \
    --cc=anshuman.khandual@arm.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.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=lizprucka@google.com \
    --cc=mark.rutland@arm.com \
    --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