From nobody Mon Feb 9 01:29:41 2026 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AA8F313E2E for ; Mon, 26 Jan 2026 09:27:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769419659; cv=none; b=ECnP/jOuwzahIZZX/yyde8QisQEg/8wIewTFR7LxhV9mDpQUsc3l0Bx1BlN2yNyByXonV20IDOevhKtfkaJwWhZTxPDH3G0LqR5Abv4E6iM8VHQWkKGH7aZZt7Z9nDVLWH1NXchrJ7PiY5koA2s6udewMIFnUgS9wjT2dpmcnTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769419659; c=relaxed/simple; bh=HbJ+s9ERQpCPv7mfOKNuDHBNCAoRV1bfJEOnQf27PWE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=AGXnF7kKb9cCNqLgRcnJtjckw5ybY7PXLwAfu6OXwgYbfWgtL7N6zzx6NYFTMkGNIMiOTRgPEHQxaY/i3THi9OeAjK294px6pTAiCmZpj4eVgzMryhIUBrNJvkNC1fzdoqIRy1LlwgkHXdLPKaIIzLKSFxtxlnUgc2t3ItbPSqU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=H5fl+pEZ; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="H5fl+pEZ" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-4803b4e3b9eso34378295e9.3 for ; Mon, 26 Jan 2026 01:27:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1769419653; x=1770024453; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Ir5Ku/kBhV1xo3f4cYFTds8Jwvu5+ARQt7mXP3/a2YI=; b=H5fl+pEZQo4XnLRNWl92/D8/B14EWNMoWKjkGM5xBMZdSyr7ylUAlqy0SbU0R3xm/s +h3XB7Hvxur1QOdGCh4sIJfRIiFfNLyPMH+WJ2X+vL6wGm/jS8aMg6cJ5nz4mJzZ1Yoz Ik3JMuVvPWuoT3/te0U28Ie/+qQrLregUpZRnbjxDFG+8Z6Z5EwYubBihlwHWvchOJy3 35aRhBDSY0fRtaW93qL31Ql0TV6rAYROXUtVy1ANyJDS1EpCd3hDuumeLHKvQb9Cu9JC IpP+BFtfB3XeJTBS1tvVcadPUiJG5ozuSogYc2cjLEK1C36XHDRFTaj2auBI59v/Hzin l3sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769419653; x=1770024453; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ir5Ku/kBhV1xo3f4cYFTds8Jwvu5+ARQt7mXP3/a2YI=; b=WzGqWG4UPjrMnZuiuRs9CI9Pf2ZTRPcwuHdK0bTffdwbALZ6MkL6aHMvn40A15VF2W demmFmcsCPxesumNUkPHZWjFWyqsXLEG+K9E2ACiXEJayf5gd/fqoiXJRsKTsZdFIeHf kiKb3lN16V6oGXbdoG6jt1kSr5qmrh+FcUSppkLuikFW1IDnvXTwMCMq/5Qt4Dbs1tW2 jOK7PGYUgqAG0P99qJgfCZ2ik5vkXjqoZBxiLYK6LBZ+YA+M40zMB4EXR9LokafJIyRC wZgw9SBQFZkxwPQ4vl7MBCPKODHHZ/5bG+xe0vOmETqNM5hvnLSQ60eki+n3+Pq9oQft kPXg== X-Gm-Message-State: AOJu0YyxnabrVu56t5UjwTxCnlMiEeGCHnZVqmqvph2x054xbByqtZc0 uN8tUzOf9zN0uipXnrDczBpfKTxDZ3nnBMP8acIYmP0UbWqKHARCYPtsHabcYv5+GC+TTtLx1ga ozsNLJ9xPzLFAXiscKBscGpQRBTB9RmuNVYrYzLmhm/d6X8C/n605b/x2ZicSFjKbpSljZDH73d tJCTrnt7Ur1zU6mb199aIYfC82QyUcyRzO5Q== X-Received: from wmcu2.prod.google.com ([2002:a7b:c042:0:b0:47e:e4a5:c5f2]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:a08c:b0:480:3a72:5c10 with SMTP id 5b1f17b1804b1-4805ce4f010mr77377385e9.16.1769419653485; Mon, 26 Jan 2026 01:27:33 -0800 (PST) Date: Mon, 26 Jan 2026 10:26:33 +0100 In-Reply-To: <20260126092630.1800589-12-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260126092630.1800589-12-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1953; i=ardb@kernel.org; h=from:subject; bh=pPbGakq4Y87FHZEohxgZxqjL2z9m2SzmfynlW86oFBs=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIbPc2OPan3+7fij8ksibeLlIhSWt4tJNvstbmdqFDO+zh Vs5Pm3vKGVhEONikBVTZBGY/ffdztMTpWqdZ8nCzGFlAhnCwMUpABNJ1mL4H17OOzNlTmVlZV79 +YvKLROfvd2wtjzTXW/xIa5XnZcW/WX4zb5FfJ5ThmXau6Mv2BbW9E99PtvpwHdeVv7LhyP8mrK 3MAIA X-Mailer: git-send-email 2.52.0.457.g6b5491de43-goog Message-ID: <20260126092630.1800589-14-ardb+git@google.com> Subject: [PATCH v2 02/10] arm64: Move fixmap page tables to end of kernel image From: Ard Biesheuvel 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 , Ryan Roberts , Anshuman Khandual , Liz Prucka , Seth Jenkins , Kees Cook , linux-hardening@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Move the fixmap page tables out of the BSS section, and place them at the end of the image, right before the init_pg_dir section where some of the other statically allocated page tables live. These page tables are currently the only data objects in vmlinux that are meant to be accessed via the kernel image's linear alias, and so placing them together allows the remainder of the data/bss section to be remapped read-only or unmapped entirely. Signed-off-by: Ard Biesheuvel Reviewed-by: Ryan Roberts --- arch/arm64/kernel/vmlinux.lds.S | 5 +++++ arch/arm64/mm/fixmap.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.ld= s.S index b2a093f5b3fc..c089b83308a5 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -335,6 +335,11 @@ SECTIONS __pi___bss_start =3D __bss_start; =20 . =3D ALIGN(PAGE_SIZE); + .pgdir : { + __pgdir_start =3D .; + *(.fixmap_bss) + } + __pi_init_pg_dir =3D .; . +=3D INIT_DIR_SIZE; __pi_init_pg_end =3D .; diff --git a/arch/arm64/mm/fixmap.c b/arch/arm64/mm/fixmap.c index c5c5425791da..b649ea1a46e4 100644 --- a/arch/arm64/mm/fixmap.c +++ b/arch/arm64/mm/fixmap.c @@ -31,9 +31,10 @@ static_assert(NR_BM_PMD_TABLES =3D=3D 1); =20 #define BM_PTE_TABLE_IDX(addr) __BM_TABLE_IDX(addr, PMD_SHIFT) =20 -static pte_t bm_pte[NR_BM_PTE_TABLES][PTRS_PER_PTE] __page_aligned_bss; -static pmd_t bm_pmd[PTRS_PER_PMD] __page_aligned_bss __maybe_unused; -static pud_t bm_pud[PTRS_PER_PUD] __page_aligned_bss __maybe_unused; +#define __fixmap_bss __section(".fixmap_bss") __aligned(PAGE_SIZE) +static pte_t bm_pte[NR_BM_PTE_TABLES][PTRS_PER_PTE] __fixmap_bss; +static pmd_t bm_pmd[PTRS_PER_PMD] __fixmap_bss __maybe_unused; +static pud_t bm_pud[PTRS_PER_PUD] __fixmap_bss __maybe_unused; =20 static inline pte_t *fixmap_pte(unsigned long addr) { --=20 2.52.0.457.g6b5491de43-goog