From nobody Mon Jun 8 08:35:27 2026 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (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 2128A322C6D for ; Thu, 4 Jun 2026 15:12:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585940; cv=none; b=qJcO6qHQ1xXsfAyC7PpPPk8I65BFaKr7DdxIsEYXhQBQpgGlCuYP5HCz32KpjirKp1cIupYsrG+qSae+GGdrgL0aD1gEBznVcCKZJzNk08BJZb4QDMHx4tzsvuYvGRI0nZ5FUISXZVHi9oXUh1r/rQAJktoVhtmvDUZltTiRRcg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585940; c=relaxed/simple; bh=qALO0pyHR8x1cwg8ZIwf9I3aH0bCMgr3LZFTac+4hRg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Qw5ty82JXmSARXbMihB7v2006VAJGuXzgfh76SHlUPxhy9ZTpeI8tkEiq6s2CDcRZhNlsr0XyHjoYZ8M45qramEGtU18KWSVuBocD4oa4ZcUIveU2dCt21jEtVFnNBHv1dK8+i3K00Egwqg+p2qcw6UrN7ahGdA9VM/c3yUKDmw= 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=USiWOX5i; arc=none smtp.client-ip=209.85.128.74 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="USiWOX5i" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-490b37e1ebfso4262525e9.0 for ; Thu, 04 Jun 2026 08:12:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780585937; x=1781190737; 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=1vft77YELPmjJ4ZOMQRn5jvDbuRX5+oDiBLjSUaVIbM=; b=USiWOX5iA3xNEA5JZj8KX24PgG3VwOgybyaWxUa5AKl/TLfXGxqfcntRpxTKUzKf8P mTY8qQLw36rpH284OtIDJGChWAdNwFZ5SXqXHCSsQUAdh6a8YSJWTcRhP24QkTjbh8t5 C25XIi5elM3tUKzq8XkK6KhrtsqcWe4f5dMQxQwOBB8r/HoViyKnZ+GeWPsmP6IGb1gD a5JZLlbwHMvZ86FV8gljK09QebYXMT3Kf9aXN3saVqYDbwArKPIDNV3S3+Py+udB1r0F 3SFgHu5DTk9yFl8EtLaJQTfil4oopIWPH6ISca23Lq4pCFNUojpKlXRhaukZ63M8t8Pz mS4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585937; x=1781190737; 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=1vft77YELPmjJ4ZOMQRn5jvDbuRX5+oDiBLjSUaVIbM=; b=pWWqmHldOZN6fAyU3LYTLFV3R4q9FYm0RwZexvG6yWyIiiWMAvMXSl+6Jbo2WGmusf kG3VeS800SK6/gEjQOk71EQ/nPjlPdVS83kQUpxM2LWLaY3g47jBmCk5vCRWOtjrfZii J3hw4fJ91V/JwXAZIpGTPQ7uZ/5+0NLao0ewnJdf3i6sMt/QpWKxq6frRQaPFr80InSu bz/EcLo9Ukfejru2wsSfIjrepV7izIDvG54MUTvS3msSaLlA91fg537WmvbyG9QL5DUy LXRkaQYjs1EANDZBKHRzpDF1Xo2/1cq7fzI0Kxt6r5EZvzXz6B3ILKA4swlc7Symf71g il2g== X-Gm-Message-State: AOJu0YzrSN829KplUQlSK17h3I/dHjwJMc1Xh+SyhWGSd03TBwmrUIYR NIKyvcOfbAbJ0Jf56b80jGHRMiHqN/P/64ui9RKoWEOOcjrfdWMXBYVON6cwOv99LPqkZBBQmA= = X-Received: from wrbfi7.prod.google.com ([2002:a05:6000:4407:b0:45e:e6b0:3979]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:8b01:b0:490:6237:5200 with SMTP id 5b1f17b1804b1-490b5d36863mr138738705e9.10.1780585937520; Thu, 04 Jun 2026 08:12:17 -0700 (PDT) Date: Thu, 4 Jun 2026 17:11:53 +0200 In-Reply-To: <20260604151151.150377-7-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: <20260604151151.150377-7-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=3698; i=ardb@kernel.org; h=from:subject; bh=evI3lVeMOyNIXHC2cUpGPRX/cshmKemdx+fpRfwf0/A=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIUtx6q6G5VHLWGY3VFw34+IQ3qEXUnKc4ZZBKBvbzNkrD p/ZN2FmRykLgxgXg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZiIyHuG/55z5G491F67/dKX M2zJqSlrH13o3vVvk3rTlv8siw7Hlsxm+Gd77uWt5Jrk549dry/TLf15NfRb/8ySPecfMnDc6u/ PWMAFAA== X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Message-ID: <20260604151151.150377-8-ardb+git@google.com> Subject: [PATCH v2 1/5] arm64: Rename page table BSS section to .bss..pgtbl From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, Ard Biesheuvel , Kevin Brodsky , Mark Brown , Marc Zyngier Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Rename the .pgdir.bss section to .bss..pgtbl so that the compiler will notice the leading ".bss" and mark it as NOBITS by default (rather than PROGBITS, which would take up space in Image binary, forcing all of the preceding BSS to be emitted into the image as well). This supersedes the NOLOAD linker directive, which achieves the same thing, and can be therefore be dropped. Also, rename .pgdir to .pgtbl to be more generic, as page tables of various levels will reside here. Signed-off-by: Ard Biesheuvel Tested-by: Mark Brown --- arch/arm64/include/asm/linkage.h | 2 ++ arch/arm64/include/asm/mmu.h | 2 -- arch/arm64/kernel/vmlinux.lds.S | 8 ++++---- arch/arm64/mm/fixmap.c | 6 +++--- arch/arm64/mm/kasan_init.c | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/link= age.h index 40bd17add539..8637f667667c 100644 --- a/arch/arm64/include/asm/linkage.h +++ b/arch/arm64/include/asm/linkage.h @@ -43,4 +43,6 @@ SYM_TYPED_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) \ bti c ; =20 +#define __bss_pgtbl __section(".bss..pgtbl") __aligned(PAGE_SIZE) + #endif diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h index fb95754f2876..5e1211c540ab 100644 --- a/arch/arm64/include/asm/mmu.h +++ b/arch/arm64/include/asm/mmu.h @@ -13,8 +13,6 @@ =20 #ifndef __ASSEMBLER__ =20 -#define __pgtbl_bss __section(".pgdir.bss") __aligned(PAGE_SIZE) - #include #include =20 diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.ld= s.S index 2b0ebfb30c63..d3ed59abab38 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -352,11 +352,11 @@ SECTIONS BSS_SECTION(SBSS_ALIGN, 0, PAGE_SIZE) __pi___bss_start =3D __bss_start; =20 - /* fixmap BSS starts here - preceding data/BSS is omitted from the linear= map */ - .pgdir.bss (NOLOAD) : ALIGN(PAGE_SIZE) { - *(.pgdir.bss) + /* page table BSS starts here - preceding data/BSS is omitted from the li= near map */ + .pgtbl : ALIGN(PAGE_SIZE) { + *(.bss..pgtbl) } - ASSERT(ADDR(.pgdir.bss) =3D=3D __bss_stop, ".pgdir.bss must follow BSS") + ASSERT(ADDR(.pgtbl) =3D=3D __bss_stop, ".pgtbl must follow BSS") =20 . =3D ALIGN(PAGE_SIZE); __pi_init_pg_dir =3D .; diff --git a/arch/arm64/mm/fixmap.c b/arch/arm64/mm/fixmap.c index 1a3bbd67dd76..f66a0016dd02 100644 --- a/arch/arm64/mm/fixmap.c +++ b/arch/arm64/mm/fixmap.c @@ -31,9 +31,9 @@ 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] __pgtbl_bss; -static pmd_t bm_pmd[PTRS_PER_PMD] __pgtbl_bss __maybe_unused; -static pud_t bm_pud[PTRS_PER_PUD] __pgtbl_bss __maybe_unused; +static pte_t bm_pte[NR_BM_PTE_TABLES][PTRS_PER_PTE] __bss_pgtbl; +static pmd_t bm_pmd[PTRS_PER_PMD] __bss_pgtbl __maybe_unused; +static pud_t bm_pud[PTRS_PER_PUD] __bss_pgtbl __maybe_unused; =20 static inline pte_t *fixmap_pte(unsigned long addr) { diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c index dbf22cae82ee..3fcad956fdf7 100644 --- a/arch/arm64/mm/kasan_init.c +++ b/arch/arm64/mm/kasan_init.c @@ -214,7 +214,7 @@ asmlinkage void __init kasan_early_init(void) * shadow pud_t[]/p4d_t[], which could end up getting corrupted * when the linear region is mapped. */ - static pte_t tbl[PTRS_PER_PTE] __pgtbl_bss; + static pte_t tbl[PTRS_PER_PTE] __bss_pgtbl; pgd_t *pgdp =3D pgd_offset_k(KASAN_SHADOW_START); =20 set_pgd(pgdp, __pgd(__pa_symbol(tbl) | PGD_TYPE_TABLE)); --=20 2.54.0.1032.g2f8565e1d1-goog From nobody Mon Jun 8 08:35:27 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 EEFAC3264EB for ; Thu, 4 Jun 2026 15:12:19 +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=1780585941; cv=none; b=DO3Rs1h1K59clz8V3HLjN2E6emNd/hHIxzCdlTSMZFy75qA5Tgiq9Uy5YdHjdXjeQxHGdM8BGz4ZtCyeRB3k6xMdPmfxIOIIBIK4YZoRa0zb80UvCJCo/On+m65U0FJUYPWZhTjpC3LYAuI99E00n8xxaY3ys1F8tylo4M/wvLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585941; c=relaxed/simple; bh=cbbbZ59Rp73Q1AhTMmKnNcT40z3aKFchofp70lB/j6s=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=owmIL43SQxf40k7nB8tuLggtJR/+evp2ESco4Fqqd80y97gb1/aYgA2ji798ai0NTUBqQ2gK7dBmwgdrIziJDguarWmjDsrhHg8UqmXH7nlvoKtEHVwKz+ZMb0G3O+MpKYEY4ZDJ6v3U2xsxnssy6EbOf+Y8lRTuucTwZOC/Qlc= 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=uTlPYD4I; 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="uTlPYD4I" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-490b4d3d3e6so6926625e9.0 for ; Thu, 04 Jun 2026 08:12:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780585938; x=1781190738; 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=bXPIHoC6dhQxYOxBacC2HRb5Z1DiryyTwf/00/NWMZQ=; b=uTlPYD4I5zuGDUWEyMYVb11Jm9PeoZ/Vv7g+JYKurfEqT5+o1bGwZqqjz66fYQsjNe MRTmoyFrp+Qhk+C3SbdhQ6qbrs2RzVjl0V3GJvYIYumnulDGqLbVysTC+dTM7y/0gI/B N1067dLiFDSuDD5GFQcvoPOrsexkLHqsURaDK2UACWl4QSUqQxtZ7GvGokBKVNHwKGti gOlMggPDW3VoWOixxt1XbNlf1obHNLUpvDg3ptAvr8Z6WIF62iIv2JqmWzPysf74ft0S Ee7C+9c3eOr2uEybjBFzkiiwIGc9ndlzuoxa6Lw/gPir6VKip9Xe3sLHrav58mrqiUme 2kSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585938; x=1781190738; 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=bXPIHoC6dhQxYOxBacC2HRb5Z1DiryyTwf/00/NWMZQ=; b=YdlMzJSaMc9YP+wjjbQ9UuzO07n1eI823/yB55Ca3fqcrVzDQ2kTDlFvmQb/2ARIbI PkJtX5ZgZQw+6gpvlLEvuU/L6j7yFlyg6tgV/16IV68Ai895ujnIQLDFseHIKZ60bOxX SRFoIjKT7ROMrQ3lg9+So8WIQNFH1Jq5lU8fuRzFl9gSF9cdNeMgyRsT0QfFT2FWL5no /OiZA/Fpq9qMiwsDJVSIZPeCxooY8BGHix0ZTDqxWA1kok1VXJhURi+Jxn3OFQwcKV+K u7rcoI5T0Oz4hLLOGm7PPR7mgVmpydiywPRFkW6/Mqp8/uK/CWSbE3Wbd0xXF3VXkUkc lL0g== X-Gm-Message-State: AOJu0YyyV8T6AH2LsyICBm4gqF/MBB65eVf9t6IQCipEBrv9xwc9WuQv JiGyzZSJOkQk6uL/2jvUmQad7j0zXE5M7CrYoXy7Rn6uzPlE95ygRKJ0S54DRAkq6Hstv5v9JQ= = X-Received: from wmqy18.prod.google.com ([2002:a05:600c:3652:b0:490:b027:8bb9]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:630f:b0:490:b025:f324 with SMTP id 5b1f17b1804b1-490b60e41a8mr143581645e9.32.1780585938337; Thu, 04 Jun 2026 08:12:18 -0700 (PDT) Date: Thu, 4 Jun 2026 17:11:54 +0200 In-Reply-To: <20260604151151.150377-7-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: <20260604151151.150377-7-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2917; i=ardb@kernel.org; h=from:subject; bh=+nQFwh3CCsb7IAFs5SOeV7aCtFUyymbKVrG/Mwiho9M=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIUtx6m7dg9qWn6/VJZ78s+l3vpXFFt7VC30979V9nqc9P 1tdomhLRykLgxgXg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZiIw0dGhrM7xP2fXFe4euWa //b3O56+//xxnfLj+G9zPq77arNLWpSd4b9Xz73Vdi+21bFqc1b76n67W/NR6slK4eM/Y+W2nsr 4eoQXAA== X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Message-ID: <20260604151151.150377-9-ardb+git@google.com> Subject: [PATCH v2 2/5] kasan: Move generic KASAN page tables out of BSS too From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, Ard Biesheuvel , Kevin Brodsky , Mark Brown , Marc Zyngier , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , kasan-dev@googlegroups.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Make sure that all KASAN page tables are emitted into the .pgtbl section (provided that the arch has one - otherwise, fall back to page aligned BSS) This is needed because BSS itself is no longer accessible via the linear map on arm64. Cc: Andrey Ryabinin Cc: Alexander Potapenko Cc: Andrey Konovalov Cc: Dmitry Vyukov Cc: Vincenzo Frascino Cc: kasan-dev@googlegroups.com Signed-off-by: Ard Biesheuvel --- include/linux/linkage.h | 4 ++++ mm/kasan/init.c | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/linux/linkage.h b/include/linux/linkage.h index b11660b706c5..53fe1f48fd28 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h @@ -39,6 +39,10 @@ #define __page_aligned_data __section(".data..page_aligned") __aligned(PAG= E_SIZE) #define __page_aligned_bss __section(".bss..page_aligned") __aligned(PAGE_= SIZE) =20 +#ifndef __bss_pgtbl +#define __bss_pgtbl __page_aligned_bss +#endif + /* * For assembly routines. * diff --git a/mm/kasan/init.c b/mm/kasan/init.c index 9c880f607c6a..66a883887987 100644 --- a/mm/kasan/init.c +++ b/mm/kasan/init.c @@ -26,10 +26,10 @@ * - Latter it reused it as zero shadow to cover large ranges of memory * that allowed to access, but not handled by kasan (vmalloc/vmemmap .= ..). */ -unsigned char kasan_early_shadow_page[PAGE_SIZE] __page_aligned_bss; +unsigned char kasan_early_shadow_page[PAGE_SIZE] __bss_pgtbl; =20 #if CONFIG_PGTABLE_LEVELS > 4 -p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D] __page_aligned_bss; +p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D] __bss_pgtbl; static inline bool kasan_p4d_table(pgd_t pgd) { return pgd_page(pgd) =3D=3D virt_to_page(lm_alias(kasan_early_shadow_p4d)= ); @@ -41,7 +41,7 @@ static inline bool kasan_p4d_table(pgd_t pgd) } #endif #if CONFIG_PGTABLE_LEVELS > 3 -pud_t kasan_early_shadow_pud[MAX_PTRS_PER_PUD] __page_aligned_bss; +pud_t kasan_early_shadow_pud[MAX_PTRS_PER_PUD] __bss_pgtbl; static inline bool kasan_pud_table(p4d_t p4d) { return p4d_page(p4d) =3D=3D virt_to_page(lm_alias(kasan_early_shadow_pud)= ); @@ -53,7 +53,7 @@ static inline bool kasan_pud_table(p4d_t p4d) } #endif #if CONFIG_PGTABLE_LEVELS > 2 -pmd_t kasan_early_shadow_pmd[MAX_PTRS_PER_PMD] __page_aligned_bss; +pmd_t kasan_early_shadow_pmd[MAX_PTRS_PER_PMD] __bss_pgtbl; static inline bool kasan_pmd_table(pud_t pud) { return pud_page(pud) =3D=3D virt_to_page(lm_alias(kasan_early_shadow_pmd)= ); @@ -65,7 +65,7 @@ static inline bool kasan_pmd_table(pud_t pud) } #endif pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS] - __page_aligned_bss; + __bss_pgtbl; =20 static inline bool kasan_pte_table(pmd_t pmd) { --=20 2.54.0.1032.g2f8565e1d1-goog From nobody Mon Jun 8 08:35:27 2026 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (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 889BB3368BF for ; Thu, 4 Jun 2026 15:12:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585942; cv=none; b=H6jE7og/qjGDc8JuxTZ6d3b9UhfdRCwu53b3VCP87x7qxEbDnjpeHbAtogcjDyl8kaAjLVTCco3ZQ2rnUCPF6AVmUqyh7ww42s45a1eZI375y7IgjnIjemjISoJ3+4svQebC79YLZZxiTu8KvgYJcQ8kOYXX7Rla4E6WIJO/0IQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585942; c=relaxed/simple; bh=UMjgCmB1f7tn+ZahT/zZLL/dtSIsvXofK5mm+isFSCY=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=O09KTm4YkAfbJFcw9sOfmYxXl7YbA0fvIXlvyfckiJ1qdWc7nhgb9d6cZmJgzeWWMeV8qqd2tlp5s2/CaYrp4PD9hXPGgds7Gy4FSxz4Oujx4HRsT/ZR2WtfmIpp4nQug8JUWCQjnp4eawp3VWPGZxI94LllT9s4mAPxhoKIY1M= 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=jdco4+17; arc=none smtp.client-ip=209.85.221.74 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="jdco4+17" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-4600c8cb13aso508662f8f.1 for ; Thu, 04 Jun 2026 08:12:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780585940; x=1781190740; 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=CasHJuCvieisWqL8kBoseI3vU+9nQuNqwVDXJ6YMA3Y=; b=jdco4+17ax6Fx0BlNf2uQ/9vMy4FAV7ncjWihFfkKUr63/vS+oHNzNQn0YVr2LX1g4 2qj6E0V1WOi/461L8SzGARqmrCMlHautPMLyO+N4sBrJk6Y8gnAdG892ok0AWu+aguwu b10OM06MJVfIq+JsN6Gj01+PA8eQehS24JggM04BBwCuXG5H5lgu2m/2WmLfLe/DxbGN yDnu+3ekGZdTVS/2b0jQgoT2klKeMY4AxwxNkj6G7KnkPcdNEkEJWglSsyvUpzYX0hYw rlH5xgy/sNBgcS5SGAUDzVCmSiEeC3v3cP+ix5hq707p4WWJj+7AffMO9GZ+2gfleDUa tiaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585940; x=1781190740; 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=CasHJuCvieisWqL8kBoseI3vU+9nQuNqwVDXJ6YMA3Y=; b=cONVaEp4S++nwna3CTzo6UlzaURnN7rVPPBc2uoIOeeEk8Af31eGX0yor+lSG2j319 EG/GNnsfLseFVKC9bVtT6eUzJfW274y6PYx0kemgVK1bSfOHYL4GQem7Ioz4XDtpJ4xf ZSzn3NcC8iVhnZgWnjjIQTZmaVcak5nboiI3z1LpNrTFipnOThxR9p+Rd8lFMv/0uyHD GQKHmoL+9pd3Cw6WKvKOZlcnsxYSUPaiT6geoqx7X2RMvK2g78OPSF3qXVO74YliVdtX oI6+YmL+j/LKanky9GshWUPZ161QsSaI6dZzvYLj978Y1afCMPu1K1EU0GuN6CAG57mt TzNw== X-Gm-Message-State: AOJu0YyaqG8GSJWt+bGocXYiFaqlBtncAPnVDx8Vo0v9f7LFl06cHOJK tELXrjUD2CvhQtt9haaGnxIrblxnGe5KpAF/CsRHMrnMKe/d4xhg9eZ+X7K83WU7vX1kf+Qwxg= = X-Received: from wmdd20.prod.google.com ([2002:a05:600c:a214:b0:490:bfa7:ad27]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:c0dc:b0:490:6869:ef13 with SMTP id 5b1f17b1804b1-490b5ecce34mr98325645e9.14.1780585939840; Thu, 04 Jun 2026 08:12:19 -0700 (PDT) Date: Thu, 4 Jun 2026 17:11:55 +0200 In-Reply-To: <20260604151151.150377-7-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: <20260604151151.150377-7-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2222; i=ardb@kernel.org; h=from:subject; bh=5MfAD19ZZ8C7D6B6Oy/cwSyuECR6YirB5JgWa4RaF1A=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIUtx6t5nXSbvtmssWHykqergKUuNdIPnnZdr+ryTDS53S 7jGn33bUcrCIMbFICumyCIw+++7nacnStU6z5KFmcPKBDKEgYtTACZi1sbIsL7hgJ21icadQ4wl sxnry3xtJ/07HvBR97lbm9TvPofDdxkZGrY625Vtydmry5tzLfeG1mlt6aTZH8/6z3E2iPt4uDi NDQA= X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Message-ID: <20260604151151.150377-10-ardb+git@google.com> Subject: [PATCH v2 3/5] arm64: Avoid double evaluation of __ptep_get() From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, Ard Biesheuvel , Kevin Brodsky , Mark Brown , Marc Zyngier Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Sashiko warns that the new pte_valid_noncont() macro is used in a manner where the argument (which performs a READ_ONCE() of the descriptor) is evaluated twice. Drop the macro that we just added, and move the check into the newly added users. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/pgtable.h | 4 ---- arch/arm64/mm/mmu.c | 14 ++++++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgta= ble.h index 491ba0a6492d..c9e4e00a9af2 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -181,10 +181,6 @@ static inline pteval_t __phys_to_pte_val(phys_addr_t p= hys) * Returns true if the pte is valid and has the contiguous bit set. */ #define pte_valid_cont(pte) (pte_valid(pte) && pte_cont(pte)) -/* - * Returns true if the pte is valid and has the contiguous bit cleared. - */ -#define pte_valid_noncont(pte) (pte_valid(pte) && !pte_cont(pte)) /* * Could the pte be present in the TLB? We must check mm_tlb_flush_pending * so that we don't erroneously return false for pages that have been diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index be51f6cac86f..d68e691c093a 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -186,9 +186,12 @@ static void init_pte(pte_t *ptep, unsigned long addr, = unsigned long end, =20 static bool pte_range_has_valid_noncont(pte_t *ptep) { - for (int i =3D 0; i < CONT_PTES; i++) - if (pte_valid_noncont(__ptep_get(&ptep[i]))) + for (int i =3D 0; i < CONT_PTES; i++) { + pte_t pte =3D __ptep_get(&ptep[i]); + + if (pte_valid(pte) && !pte_cont(pte)) return true; + } return false; } =20 @@ -291,9 +294,12 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, u= nsigned long end, =20 static bool pmd_range_has_valid_noncont(pmd_t *pmdp) { - for (int i =3D 0; i < CONT_PMDS; i++) - if (pte_valid_noncont(pmd_pte(READ_ONCE(pmdp[i])))) + for (int i =3D 0; i < CONT_PMDS; i++) { + pte_t pte =3D pmd_pte(READ_ONCE(pmdp[i])); + + if (pte_valid(pte) && !pte_cont(pte)) return true; + } return false; } =20 --=20 2.54.0.1032.g2f8565e1d1-goog From nobody Mon Jun 8 08:35:27 2026 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (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 E646433D6C7 for ; Thu, 4 Jun 2026 15:12:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585944; cv=none; b=aUKNeMT4gSvR9rL12pFqyM5MSLl7hgtcKpBtuTMp0R9/6ArPfvXshbknkYO+XyHdIuuegrd9uFPzoV/Nyl61dhDOmAggPzXCf/H6YIffz7Dt6g1z2onsgNQsmoMOue1+fsslTJB22aJONacvZ2jHB8Lxwf6C34F92YEVT5mav8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585944; c=relaxed/simple; bh=VOtZe9auUIFqOGjFKwEy505Yv47yMzIefquCiVyONS0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=TRkXK0v2dFQlEAGKDaQdMaRwzuztRWw3Y7U7ca8zMLXtBwcxJM1IFBEfw+h8VNfEANOqjSGSt09Xdj6SqErUBrX0VNo9Rabc3jnEnTorQ8M1PL+3+YXQzu9qoXGHmLGNDA+fQOgnIR/dWbtDOYd7uXN41kBf9dXZc5LTjrnuF18= 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=wA9qdrxo; arc=none smtp.client-ip=209.85.221.74 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="wA9qdrxo" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-45ef55779d1so560693f8f.0 for ; Thu, 04 Jun 2026 08:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780585941; x=1781190741; 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=oEYxqRws0IUSMm1LUk7BAiLRYO6LZtAhsNNeVVpZ2Ss=; b=wA9qdrxoiHSkA8ve72Ph2nPURaulcS31GnwhRjWm37i6B5nXbr0kIvIFUSjKIEtAqb Zy+PQg/ESXfu4L3n31dyTPHVYyi3505oLvMKQmKzQ/VzooEEeIIHuKiZzPlSJWexNunI jP27W23GenIzM0m4h+jXp6fPWzYNSR6S7KUiq0E0H1ukJcMZZKfUuxTK7+eHNrI46jVy Lv/FidaoXwT6BoVu0+MDMhYGjclOQvTlRVGvzsoP2CSr91mWZNnhKfkJRNLbPNBFYi+f CqLPmXMYZoqQObsyTGf7TBmWVD0WWqB4alfFIXLoB/Py2b/Qs2StVTxv5+PSkVulY4Da QH7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585941; x=1781190741; 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=oEYxqRws0IUSMm1LUk7BAiLRYO6LZtAhsNNeVVpZ2Ss=; b=qr45Mm97zpuL6XNftJnaLfk+hjyjd/tuuiA9m3rs4tVhKLP9oBFWbdFgrjlQWe5WO6 hLEipgIFwI6kb0BRy0eTu/BFDD6r1vEaiR2mweVifxuq8dL5HFdLwPBmzKTErr2mHpPD 4Xeyzwbs3SH3bFyhRZcDcmEsDhok53evpb5Bx0lFkEJri4ZUt/VfwRBGlzE9NHcBje+a UeKtBL6LOAUNSPVV9EtQqh9eoyCG/ovag+Imo2VyvdgfABbNBhWtXtLxE34bhyk4MzM9 SH+bRWBOeY748CBOsyPxrDZ455MjEk67tAU3o6APWhXBMI/GTTqsvn5urtgQioP3DCm2 L1hg== X-Gm-Message-State: AOJu0YxmghXp7WQQ1Xq5LawMJfUqtcfm0u2UvUGpUbzM7vAq7wcvsZFq 5O8Nq/vp3yaSzeI5Lwxy+O1h71KkCiY8z73xA5IgLYAG+TOJ5OMUsiyxmzX9IY5+hxWueVP2MQ= = X-Received: from wrxa17.prod.google.com ([2002:a05:6000:1011:b0:45e:f34b:e7e2]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a5d:508c:0:b0:45e:e513:f451 with SMTP id ffacd0b85a97d-460216bdfc2mr10238730f8f.7.1780585940926; Thu, 04 Jun 2026 08:12:20 -0700 (PDT) Date: Thu, 4 Jun 2026 17:11:56 +0200 In-Reply-To: <20260604151151.150377-7-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: <20260604151151.150377-7-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1172; i=ardb@kernel.org; h=from:subject; bh=dgwiIv5ocMLxRg+g7B0P7cuef9P7d1jooOl8YYuWFh8=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIUtx6j7/xBdu7ww3VF8umHhOrTxmv1X/ehmmq7us1DyOv i0p29bWUcrCIMbFICumyCIw+++7nacnStU6z5KFmcPKBDKEgYtTACaiuJuRoTl9/jm1B92rg88s qn5ctuPIxa2HebZOu21xL9pGok+oyYThv/c2me2fBNfc1z/w6F3xuZ0hWWpsYfkRcSH9aW1urJd 4WAE= X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Message-ID: <20260604151151.150377-11-ardb+git@google.com> Subject: [PATCH v2 4/5] KVM: arm64: Omit tag sync on stage-2 mappings of the zero page From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, Ard Biesheuvel , Kevin Brodsky , Mark Brown , Marc Zyngier , stable@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Commit f620d66af316 ("arm64: mte: Do not flag the zero page as PG_mte_tagged") removed the PG_mte_tagged flag from the zero page, but missed a KVM code path that may set this flag on the zero page when it is used in a stage-2 CoW mapping of anonymous memory. So disregard the zero page explicitly in sanitise_mte_tags(). Fixes: f620d66af316 ("arm64: mte: Do not flag the zero page as PG_mte_tagge= d") Cc: # 5.10.x Suggested-by: Catalin Marinas Signed-off-by: Ard Biesheuvel Reviewed-by: Catalin Marinas Reviewed-by: Marc Zyngier --- arch/arm64/kvm/mmu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index d089c107d9b7..445d6cf035c9 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -1479,6 +1479,11 @@ static void sanitise_mte_tags(struct kvm *kvm, kvm_p= fn_t pfn, if (!kvm_has_mte(kvm)) return; =20 + if (is_zero_pfn(pfn)) { + WARN_ON_ONCE(nr_pages !=3D 1); + return; + } + if (folio_test_hugetlb(folio)) { /* Hugetlb has MTE flags set on head page only */ if (folio_try_hugetlb_mte_tagging(folio)) { --=20 2.54.0.1032.g2f8565e1d1-goog From nobody Mon Jun 8 08:35:27 2026 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.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 E0F46348C73 for ; Thu, 4 Jun 2026 15:12:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585946; cv=none; b=bBGuExWSaDNVaRVBaQNCejm3ORG38AaAoDvD9rrjWhEpqtToB13Rl2zklI5YsbkKW3ysl3tJMYswFT9g9aofQlWZHKcm2l7NC1VLJknpcYAG1vFuBUTQ4V+xBCMPlzr6oSHtzK4nLxxIyJyICu4PVSXDcfqEaiFbjAYwXXWKZ0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780585946; c=relaxed/simple; bh=RjabiXVJbyjDFF8QC9c1zqzpI6ZmnO2wM1vU3yWxGuw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=TjksQ0oThrHmpZqQY8GRUZ26q0hkKpGnZt/Voxn1AzuGyMZidx7Bznag6CmGlIX1+c7v/EV7KyvkINgMXASyWdpCvqQQPQA7x/LM7M/eiIs1yiRMb+WoHyF/lmAojj/V+UJ4JjlGf/M3lLt31Nx+Hy8Oavmvh31nNaUMw1ONfrQ= 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=gISs2rye; arc=none smtp.client-ip=209.85.221.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="gISs2rye" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-4601daf4c65so527811f8f.2 for ; Thu, 04 Jun 2026 08:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780585943; x=1781190743; 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=vn2prO5o05wItrpzO+IXrwTtuowQn2HpWBal1Vxejcc=; b=gISs2ryeetGNOi2cfqLC2EQU6q4Cdt261s3wNX6hhyKP26NFEETTbfjDaBLwAfdKtr ydOQ6Sz3jBM0HpM+77OaYaGfk7YZq0tMVYHIvQDcXSlSuq+uTMRjpERu8NxpzG50efVD GdcHnkfqCBOHE3Jc21PvhYXmVywl8eBxu1Q/kWW7lGHOT19U401VNNZ7pPk5FzULZbZA rGfBpblhYJojE9m6mslp3cIejgHj8E1Hg/8TgJ2dTQtovd13KiJHzACvB+WhPxTZQfpy iP/zAItzQW52TrSoSoXCXRwO9/Ok6ke1nkR/2RTxUuQF4I/WCz6T0K5LfgdNtlH68B07 z1cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780585943; x=1781190743; 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=vn2prO5o05wItrpzO+IXrwTtuowQn2HpWBal1Vxejcc=; b=b4sMfrGWN/hbFo90Fo06DaoXQ9kZK5Sw6H3o8WOM5vgjoyIe6azE5nL2z7ni9h23w8 W++bdBOLT+NzwaflLig9rM8o18Bn2r21Mb9/X1iVxN80IL1xPjXY6F3TxEKpiUh5vs5Q KoEHwBjbBxhqs9guX36Hmm9pKyCzdtDlBRspvoHKMipBYTaxj4AXEmmVMZcODg9vNSlj jqytnxHP2QBb6qAIBbIoP2H965mfImY4pUe8v0bFPsmGVl8ZoFSnmgJruFOKRuiu1FMJ xiRxpPPvFUTPJPnrWCOY8KPw1qFhwgETGgIlQXhtwbOzzdrbcz2gxW3XjNwBvK//sM7H Wh2Q== X-Gm-Message-State: AOJu0YxarsLDaO3U45JwjXwHQ2L7hX2Eid5k8umX7E4v5aYr81VTOEPV QY7z0B1IjLHHurx5WoTQ0pBlZnWXJ6hg7TaH0e6sirMRYBxwh/LgV6pd2y/bJggo21lIQZxUFA= = X-Received: from wmd16.prod.google.com ([2002:a05:600c:6050:b0:490:b32e:ef70]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:1f96:b0:490:53d3:47a9 with SMTP id 5b1f17b1804b1-490b5e7962dmr132211665e9.3.1780585942997; Thu, 04 Jun 2026 08:12:22 -0700 (PDT) Date: Thu, 4 Jun 2026 17:11:57 +0200 In-Reply-To: <20260604151151.150377-7-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: <20260604151151.150377-7-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2216; i=ardb@kernel.org; h=from:subject; bh=kV5OmQpXjgFAS7tCAScTDlrNCgx2UTozsq6mIJLDLaw=; b=owGbwMvMwCVmkMcZplerG8N4Wi2JIUtx6oHaU/ozd+7jFmBSUJq87skO7VmvdH5vr4uzO/6a/ /8qmZMZHaUsDGJcDLJiiiwCs/++23l6olSt8yxZmDmsTCBDGLg4BWAiN04w/M+bulX5sH7iIYlv m9auPOww+5Ogbav4KsNWhoy7ydPPZ7cx/DMNen1ptYP/+hXK7y+dj7zCqlgRIvO9IfjDscc8ne8 UWhgB X-Mailer: git-send-email 2.54.0.1032.g2f8565e1d1-goog Message-ID: <20260604151151.150377-12-ardb+git@google.com> Subject: [PATCH v2 5/5] arm64: mm: Defer remap of linear alias of data/bss From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, Ard Biesheuvel , Kevin Brodsky , Mark Brown , Marc Zyngier Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Marking the linear alias of data/bss invalid involves calling set_memory_valid(), which calls split_kernel_leaf_mapping() under the hood. On BBML2_NOABORT capable systems, this may result in the need to allocate page tables at a time when the generic memory allocation APIs are not yet available, resulting in a splat like WARNING: arch/arm64/mm/mmu.c:821 at split_kernel_leaf_mapping+0x15c/0x17= 0, CPU#0: swapper/0 Modules linked in: CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 7.1.0-rc6 #1 PREEMPT(unde= f) pstate: a04000c9 (NzCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=3D--) pc : split_kernel_leaf_mapping+0x15c/0x170 lr : update_range_prot+0x40/0x128 sp : ffffc99ad3863c80 ... Call trace: split_kernel_leaf_mapping+0x15c/0x170 (P) update_range_prot+0x40/0x128 set_memory_valid+0x94/0xe0 mark_linear_data_alias_valid+0x54/0x68 map_mem+0x1fc/0x240 paging_init+0x48/0x210 setup_arch+0x274/0x338 start_kernel+0x98/0x538 __primary_switched+0x88/0x98 as reported by CKI automated testing. So defer the boot-time call to mark_linear_data_alias_valid() to a later time when page allocations can be made normally. Signed-off-by: Ard Biesheuvel --- arch/arm64/mm/mmu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index d68e691c093a..3134f1c1097c 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1095,6 +1095,9 @@ void __init mark_linear_text_alias_ro(void) (unsigned long)__init_begin - (unsigned long)_text, PAGE_KERNEL_RO); =20 + /* Map the kernel data/bss as invalid in the linear map */ + mark_linear_data_alias_valid(false); + /* * Register a PM notifier to remap the linear alias of data/bss as * valid read-only before hibernation. This is needed because the @@ -1237,9 +1240,6 @@ static void __init map_mem(void) __map_memblock(start, end, pgprot_tagged(PAGE_KERNEL), flags); } - - /* Map the kernel data/bss as invalid in the linear map */ - mark_linear_data_alias_valid(false); } =20 void mark_rodata_ro(void) --=20 2.54.0.1032.g2f8565e1d1-goog