From mboxrd@z Thu Jan 1 00:00:00 1970 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: 8bit 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; } +bool arch_make_pages_readonly(struct page *page, int nr_pages) +{ + unsigned long addr = (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) { -- 2.47.3