From nobody Thu Jun 11 00:04:37 2026 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (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 1600632B126 for ; Tue, 9 Jun 2026 14:39:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015942; cv=none; b=o5WNkjk3+4ysBKsVNZ9rgXdFmkkbPavgixjkVyrzOSca2oHyYH9Fm0XuMZXYEG56TKUyw2rgQWCyrjkITo2BQnIaWdvwdGIwUUVbhIrd19HHJWdKqXIpCGzrnLZJwmj/nw0WKvySkHitVfo35PFogITNjj5+WsGs9X9KDrsRIeM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015942; c=relaxed/simple; bh=FQwYe8pNIO676qrACCxHOIRwcQYpQb+HgQYeAAMjzXo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=meXzXOIN9jDbXvt+XFAV6MpzgLSUYUJY5Byj9OgAe8qe0E8xdFG0Io1+kic6eLBbsHAsOhj6IdqItz9YzeOMdST8GMVoYB7tvEE94hotCd1blzBUE8liEjVy64uSs3rwC3MhYD+SYm8LIAX3gAHk7k9CTGpBq43Zo+GsaWFPTqI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=luupJ8Gj; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="luupJ8Gj" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-c85a2b8c95cso180906a12.0 for ; Tue, 09 Jun 2026 07:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781015940; x=1781620740; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MyS7mKR1Pj5rWSjXZPjC1j5mlisxE9H8ozK2CuoOEmk=; b=luupJ8Gj0VMMdWZxYQTq7t/rnSsAvsIQVhtoj39QRm8WXNDfG/i+FHubxm6c5OKu8z rrJQkbHMELujpLl9ZOzoZ76WI6hJgoPrPJD2H24V3dOZ+Z3x5ElC+R2mO+FlJKddc8Z9 jw8RyTv3GokxZaEWqANri8wTE6W2By4YTLh1MBfTySbpCMAgqjTtxmgYPxVthRMzVy5n 3V40+DfyVfs4uUYLfaKt9QoR2lHhqK27vne7w0ksB1oaZkpUvzgLV5bOwcQKuMm91yFH uQ7BdjMM7Zv/kFQH5ldcBHarztFBxxt0kx3fT5ZPZRtGNUjWj1jOzTWmyw8X59rHajTM HkxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781015940; x=1781620740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MyS7mKR1Pj5rWSjXZPjC1j5mlisxE9H8ozK2CuoOEmk=; b=AuJ5HEypolmxBSLBaYj+5g/hbWGdTBDnGetEwwD+4HO6PbKdnID7+6uLzXaP7sP4AG JriPWjyaE7+Bp16Catx5DLb9m8EpiYwT6mMSNeVYq4G+rqDoAhR2YAUtvO8RGYKOcskX 0DaPsOgyeUbmr7rc+ca/jN2pByaLe8wbdXUQHFoIRpIs5cBamPzFYRfajhHQTzeFCqf5 94oCth13vxRIxxarNnhO8YojoY/knfhSoYkcJCXsrjOQ1YnD59Qff5DNVWOZWUGIIYvh u9eQpG7b2w0cYhDYlpljvb+OI7eHPDzz4uvHRWjjJ08oa2wSeL5RvgrMIGGWW93XFtc4 uAIQ== X-Gm-Message-State: AOJu0YzfBLxhDaBjRshJ3TD31OtECr+Zdac5lYd5r2TlHkuKQaCIWtuW 4zhpoJn4AYcHIsHLayBIYn7qNDjLWUCdyy7jI6MkHy0Yhggn6BRubm2L X-Gm-Gg: Acq92OFVS2YIqhqqeOGAoCYLDQUlddAoFV30ANWpiobRe0s2CGhRgkZhi+6qHVfHrsX 7tVm5DrxHHtohqUB1703hOJe3kT5t2v6UmLktv3HLVtciCEBAbe6vdkKuGIVj+y55oOxvYZJ3SP piq3LfGVOK4DA+Lfeay6A7rKDf5QKNSGKRHarCtPQ+3MHuqLUBUQCDZm4Kt+8rVu4s3en1P1S8U Jkunt2hv0m9hUPbURADzXazXDC1S4koZ8O4EoJoSqYYNo1GFi/VTi9xKHgXQ3l2RXyNKIqrRDZC fyNYd+C75HEmfetpsPa2133j6nM3EK0vFy+9Zn+FYAXeVr7zlLs0BeRNAId5c6/Jee+gQSGKkqk QFC0ss5jFzN7qMRGmAXtaJM2TFJFs//4Eqkr0WmjhihbvjWHvmdecJO76WalFtdgRbAhgbm64H1 wJLOdATTGAMjEM3f33+L9YcePWRekpjZ/qTGf6xuxMRGvOIYsWsMWW3X3wGkmWZlIRQwK8gNGMq lsYbCKyAwZy00UngWCfSUH1 X-Received: by 2002:a05:6a21:4784:b0:398:6e38:95e8 with SMTP id adf61e73a8af0-3b53b6e9085mr2088352637.2.1781015939654; Tue, 09 Jun 2026 07:38:59 -0700 (PDT) Received: from o6.lan ([188.253.112.242]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0b315esm17939677a12.26.2026.06.09.07.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 07:38:59 -0700 (PDT) From: Xueyuan Chen To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org, catalin.marinas@arm.com, will@kernel.org, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, hpa@zytor.com, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org, lance.yang@linux.dev, yang@os.amperecomputing.com, jannh@google.com, Xueyuan Chen , Dave Hansen Subject: [RFC PATCH v2 1/3] mm/huge_memory: make persistent huge zero folio read-only Date: Tue, 9 Jun 2026 22:37:59 +0800 Message-ID: <20260609143801.7917-2-xueyuan.chen21@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260609143801.7917-1-xueyuan.chen21@gmail.com> References: <20260609143801.7917-1-xueyuan.chen21@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The huge zero folio is shared globally, and its contents should never change after initialization. As Jann Horn pointed out[1], the kernel has had bugs, including security bugs, where read-only pages were later written to. If the persistent huge zero folio is read-only in the direct map, such writes fault instead of silently corrupting the shared zero contents. Add arch_make_pages_readonly() so mm code can request read-only direct-map protection for a page range. Direct-map protection is architecture-specific, so the generic weak implementation does nothing. This was inspired by Jann Horn's read-only zero page work[1] and follow-up discussion[2] with Yang Shi. [1] https://lore.kernel.org/linux-mm/20260508-ro-zeropage-v1-1-9808abc20b49= @google.com/ [2] https://lore.kernel.org/linux-mm/CAHbLzkrXXe7r3n3jXgDKtwZhRqj=3DjDx9E6d= LOULohnhBguvi9A@mail.gmail.com/ Suggested-by: Dave Hansen Suggested-by: David Hildenbrand Co-developed-by: Lance Yang Signed-off-by: Lance Yang Signed-off-by: Xueyuan Chen --- include/linux/mm.h | 2 ++ mm/huge_memory.c | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0f2612a70fb1..02d33cf45b01 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2936,6 +2936,8 @@ static inline int arch_make_folio_accessible(struct f= olio *folio) } #endif =20 +bool arch_make_pages_readonly(struct page *page, int nr_pages); + /* * Some inline functions in vmstat.h depend on page_zone() */ diff --git a/mm/huge_memory.c b/mm/huge_memory.c index b81d1ecb434b..2e9d01dc1197 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -308,6 +308,11 @@ static unsigned long shrink_huge_zero_folio_scan(struc= t shrinker *shrink, return 0; } =20 +bool __weak arch_make_pages_readonly(struct page *page, int nr_pages) +{ + return false; +} + static struct shrinker *huge_zero_folio_shrinker; =20 #ifdef CONFIG_SYSFS @@ -982,8 +987,14 @@ static int __init thp_shrinker_init(void) * that get_huge_zero_folio() will most likely not fail as * thp_shrinker_init() is invoked early on during boot. */ - if (!get_huge_zero_folio()) + if (!get_huge_zero_folio()) { pr_warn("Allocating persistent huge zero folio failed\n"); + return 0; + } + + arch_make_pages_readonly(folio_page(huge_zero_folio, 0), + HPAGE_PMD_NR); + return 0; } =20 --=20 2.47.3 From nobody Thu Jun 11 00:04:37 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 A755432B102 for ; Tue, 9 Jun 2026 14:39:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015968; cv=none; b=ldWbYgFniaD2sy1XdJodyJRg9b5VpoqNpE7miMjpdwaB4z0RItVnO8yl5PJ4xXDkvsU9T61R/fk7X5cleYYlkOOp6p3V3W4LZMFPRfx4j1TsSj7TVGjVO8+/f/p9CIZUCQv+Owubrru/w54wqUE9TQ3D5u8jDH6taX14RSVxkE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015968; c=relaxed/simple; bh=lcHXUOM68R/BqUB8NgDFUQJbTzG8AyUeCnDNAYRckDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tUpj7IMtC67yECGXlUQJ4CDhynEPgLFbg4h9vka6sjrMr6CKK0Ddei0UCZP/vY1rfRgf17UaNcBK3iOHdpAnYpFO8mc4DuJAgyCdo5aWB2YCK3ET1/Gzaz1myhtCv4A3MFrmemkc6bKOnRncxZhRatoH3+Lyc8dUFba67nuci8o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=rMeK0qeJ; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rMeK0qeJ" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-36b7b802299so533463a91.1 for ; Tue, 09 Jun 2026 07:39:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781015967; x=1781620767; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=f9YFjxCDbSbDN2uR6oPNBA7yFa0nwiCUOct4EeQonTo=; b=rMeK0qeJxdSbjLiVtTY5qCvi5ziFthimH27pawnRAwETOs+8SioSAYmhohvyRLtotj Hksp5fddUkQ06WN+Bo1apel355GPh47X2QSIKI8XkKparbXMG44b4UHRJIB+ste46hml Os9oLqsizwmwoXRuL5T/YjhY+6ekjhkh/xyqcwtw2DxV2bj+ggfQ7ixPuf9xlMvh3HXO EpiSH6BQY2K3BxWr8xynCsmh+ZOGn+741Z4LVL8PGnRfgFx5Pot/n4Y+dLgHJzMHiRTS PghA7IrEiMcM87Wc+PlMO1qasCj3KDS9r7ToA5yGm8AtVgnsBgr6eP5k+Ryf7V/CZ/uX et9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781015967; x=1781620767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=f9YFjxCDbSbDN2uR6oPNBA7yFa0nwiCUOct4EeQonTo=; b=jKax1KEMh2SRDWNGDR2G5wE8sakxbkDnicidw6Z1T7ZLYHxSkn4C1z5y+V9gQyWA9P V3Jm+i0+gHxQSLkDppwtMAzJ0Rnl+k/i+ykCaml9yx6Yi1dfvZP15d6Pn8EnClEzbIJX AKg1Yq25Ako5EO2gixnLYzWPas04oD7gKq1LWEsMov5OJ4GyTT82+2CTihFyBTX7eI6A 1ux8XctqI3ZbFsvxOCawab9+iHDx/9uJ2k1vFqLLR/BVep7YpC+DETl4kylw6uTLcceo 2wX0inLtBty9OOR1tXgnlc0k3Tl2Uuzb8GQBItwMbgMjBRbMTUjkteDpAp1cRDHEsJAe Z4Hg== X-Gm-Message-State: AOJu0Yy+bqMf6wcbJJWa9GwugKTSmW4BfdxgDVNENh1JcvukWd464HMK QlirTWY/7GRugbWpdSWVHJPBet1VDriG4iM7Iik3vS5JOUZtY/rSiJ8h X-Gm-Gg: Acq92OG7v01ZT2HWBu0qZ2Yvmz610Bcb6cb6e01Vk/VeL/q+3lxerYB3uTu/47xqvlc 6B5kuMgMjYerKFLWwsbb7Vcsvx8V1rO/ktXISE5ofDjCjhcZ4IwYJbxdo8yr5sCvzl/nOoOVNqZ Q1b9NROiHI0f7yoIq37OQTxBobdOKY+nvLYFXASv/OJNxh8G7xYLpaIu58IiAgqybrvXw8/+IlL 9fb/x+f8uYcROVE7dzZzEAKGE9ZmgniCxnvQeThdTUd1gHbFV0XFeY11EqXKDkuikJ6dqNHwluw ha2ZRCKHzt9qw4fYaihdznAqYs5Iw+b/tDk1iJxcqT0TD2tk6qE/hFvZV3FhZvuhqC5kW7MHZbQ 8GfR2psm9NVTdItq6P9+uUX+x+CQfUpBrhezPSaGgsuMnFgFiQgJOgm0ZcuQtml8tUZLzykV7EQ K7Dc81Av+G9pjSaoG4pSXumLWrllx19ERcl3ip/1bkZaolceb/st7wnLjfuVC+g76j9sHqXHR+u lpDnUk9MwZ315Z3qXlQcKsd X-Received: by 2002:a17:90a:4ca6:b0:375:c3da:c8bc with SMTP id 98e67ed59e1d1-375c3daca40mr361336a91.0.1781015966548; Tue, 09 Jun 2026 07:39:26 -0700 (PDT) Received: from o6.lan ([188.253.112.242]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0b315esm17939677a12.26.2026.06.09.07.39.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 07:39:25 -0700 (PDT) From: Xueyuan Chen To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org, catalin.marinas@arm.com, will@kernel.org, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, hpa@zytor.com, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org, lance.yang@linux.dev, yang@os.amperecomputing.com, jannh@google.com, Xueyuan Chen Subject: [RFC PATCH v2 2/3] arm64/mm: make pages read-only in the linear map Date: Tue, 9 Jun 2026 22:38:00 +0800 Message-ID: <20260609143801.7917-3-xueyuan.chen21@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260609143801.7917-1-xueyuan.chen21@gmail.com> References: <20260609143801.7917-1-xueyuan.chen21@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Implement arch_make_pages_readonly() for arm64. Make the corresponding linear-map range read-only so unexpected writes fault instead of corrupting shared contents. Respect can_set_direct_map() before touching the linear map. If arm64 cannot safely update the linear map at page granularity, leave the mapping unchanged. Co-developed-by: Lance Yang Signed-off-by: Lance Yang Signed-off-by: Xueyuan Chen --- arch/arm64/mm/pageattr.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c index ce035e1b4eaf..da97ec7d5195 100644 --- a/arch/arm64/mm/pageattr.c +++ b/arch/arm64/mm/pageattr.c @@ -3,6 +3,7 @@ * Copyright (c) 2014, The Linux Foundation. All rights reserved. */ #include +#include #include #include #include @@ -147,6 +148,18 @@ static int __change_memory_common(unsigned long start,= unsigned long size, return ret; } =20 +bool arch_make_pages_readonly(struct page *page, int nr_pages) +{ + unsigned long addr =3D (unsigned long)page_address(page); + + if (!can_set_direct_map()) + return false; + + return !__change_memory_common(addr, PAGE_SIZE * nr_pages, + __pgprot(PTE_RDONLY), + __pgprot(PTE_WRITE)); +} + static int change_memory_common(unsigned long addr, int numpages, pgprot_t set_mask, pgprot_t clear_mask) { --=20 2.47.3 From nobody Thu Jun 11 00:04:37 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (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 0C8E6341068 for ; Tue, 9 Jun 2026 14:39:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015996; cv=none; b=CPFFsGgPPE61gWI8ogEql7DCWvLmfy2nvfnPJ6WRt8dEY92Ygi021bOWTcmKiucwLsbKPURBmQBhI++pkT7RjvIhR4DUumlEFgTvmh9in8oLn8RLvSD2i5CdGDWmDg+WJqCKl4iKuG9ld3S5/RPcXLCqfCFq+Vq62vd270OMJ8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781015996; c=relaxed/simple; bh=IYx3tYTZx9goDhzRAO5HtkgsLJuu3OvNTuq97LrxqCQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KlP9UsJKGOyLaCKcUPdWdocl2keNMCU2/O9DKGepbX/ocWCI08TOgBbDlYZCTCxB+zodGS8aVdslrytSmkSIgTOKAx75Tui0S5vhKEkDHyc0XofFA0E42p6iuD0lBH1Re0tp+0884tDiNaQ0YXvczip7rAUIgS/G8EttnvaT/7o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZyrRvpRm; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZyrRvpRm" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-c862b05a78bso97515a12.1 for ; Tue, 09 Jun 2026 07:39:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781015994; x=1781620794; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xjikVzeHQvQn86OhIn4rkOMRYcykRqfrspB/jiiXnos=; b=ZyrRvpRmx14QebuqMsbsKLsOmWEJRCpn5vjG7g0PzvtLVB9ZPmbXgH3eKF+hQ/btez qRkiRAR3euaT0wysd3IwA3zHnFHzRfwPvEqUJ+YvE2Kpck5Z7o4L6bv1inncuw6kzRuN 5gREGEiNOmFshvWonOAyAoiMlBfcCC1kUQHdc/+emgl2kB3LcSfFdWl9uRtT4P0qOqDk 20Hsa5oIAcp+xhDhVvjK/hdUgaEY1gbNY/D6CnL4s1kcnf527u2tZq1DVi+Jborrt3yW vAVFL4BQ8U1jw/AtZ1/4DtfjMfGmVACQTZXRcOExQ10AeqC5+fivwVPR1URDpn3RWxsh +65A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781015994; x=1781620794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xjikVzeHQvQn86OhIn4rkOMRYcykRqfrspB/jiiXnos=; b=SNewzC7YQlmyI0bm8UHc/TGuDTlVy/18jfJKt/PYyGYsdke3ssJ6jubGnhIVex8B5I I3CjlKVItOvF0O5CMjW7sJp3P0jPeqXQRGioM4oLY7nS2JoVjBR2uFSZkYKJQ3mvIuBJ OA/cU9xEqxTgx3gWUiqpFoRUio9SIBHKxAwrJ1Qrr25J0Xgtykk9ScbUALt0lfoE/ZMA 5OTPHdxLQWodt3a0bIz75HSbxUvbJsj7ij1Ivv90rSmUfrFoWtCAkx0d/P9aNmVLIKw2 VmNjEyRl6m0AlIVhD0Yg3tzKNXou5v6+cHuOoNlfAPKgYklOfmmiCXqLQ6Wer0VoKUSM mLfQ== X-Gm-Message-State: AOJu0YxWDovKIlfINSLnJmlBhg+EjqpXWhzh3dMgc/p3r8Yxxz+ef61P 7yWGdtR95deRoT0q0Cun/QWLSUkKoxiOtDQmfagCk7gioQwSoVyTQ7Nzb+0V72wJuQBcDX4i X-Gm-Gg: Acq92OHrs4DtqmBhiHM+WHTiZ4tsRFsx8eOfhvBCn/4hLjNyTOex1Re+Og0/C6VevxP ifKjWuKg65g6N/61tx5d/x9OaaYOrMXpluxBdvHu1zMIWIt3cfl7gzAVSJBp4V9458VY+irz4Eo iq4ElnJREpymhdCujOdOrcIxRQHfUqI2+hMQWLVMif3uQosTNYQTV20P1M/pHX0d+hCabTVqcJz t+7gJZ9xaqCILvWek7EPS7wrVGjXahEgYjN4wAJHcSQ8MW3ojDXfgSDVZ6PEJ/OBIGHIq7fKnkV 3VLM/zrk36IogPhPiKEBBWtdNaN7pZ+7a6HF8HpMRFmQFeM6ShmDFEN353H0SpITpBXTORisXWW dvX4R7HZPQqWgw8DdbS0bfUZPZy2wLRsSdjW+GTGn+KeZg1DM4HkzN56MdRdcA96zlU0djIoxnp xZBDSjY8sMOHhXL+czz4vqhlk9i4qUdcLu3XyKXp8gCuHkwhRRnYC7zH8fZbIccuI5opB6No3FG v7M15GbaXUlY4yxvcJsm8N4 X-Received: by 2002:a05:6a21:699:b0:3b4:82e5:b906 with SMTP id adf61e73a8af0-3b4cd424041mr11738801637.3.1781015993812; Tue, 09 Jun 2026 07:39:53 -0700 (PDT) Received: from o6.lan ([188.253.112.242]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0b315esm17939677a12.26.2026.06.09.07.39.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 07:39:53 -0700 (PDT) From: Xueyuan Chen To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org, catalin.marinas@arm.com, will@kernel.org, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, hpa@zytor.com, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org, lance.yang@linux.dev, yang@os.amperecomputing.com, jannh@google.com, Xueyuan Chen Subject: [RFC PATCH v2 3/3] x86/mm: make pages read-only in the direct map Date: Tue, 9 Jun 2026 22:38:01 +0800 Message-ID: <20260609143801.7917-4-xueyuan.chen21@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260609143801.7917-1-xueyuan.chen21@gmail.com> References: <20260609143801.7917-1-xueyuan.chen21@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Implement arch_make_pages_readonly() for x86. Make the corresponding direct-map range read-only so unexpected writes fault instead of corrupting shared contents. Reject highmem pages because they have no permanent direct-map address. Treat the set_memory_ro() update as best effort. If it fails, leave the mapping unchanged. Co-developed-by: Lance Yang Signed-off-by: Lance Yang Signed-off-by: Xueyuan Chen --- arch/x86/mm/init.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index fb67217fddcd..ff0a7003eaeb 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -38,6 +39,14 @@ =20 #include "mm_internal.h" =20 +bool arch_make_pages_readonly(struct page *page, int nr_pages) +{ + if (PageHighMem(page)) + return false; + + return !set_memory_ro((unsigned long)page_address(page), nr_pages); +} + /* * Tables translating between page_cache_type_t and pte encoding. * --=20 2.47.3