From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0AEFC7115C for ; Wed, 25 Jun 2025 06:39:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 91A5C6B00BB; Wed, 25 Jun 2025 02:39:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8CA1A6B00BC; Wed, 25 Jun 2025 02:39:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 792336B00BD; Wed, 25 Jun 2025 02:39:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 672526B00BB for ; Wed, 25 Jun 2025 02:39:29 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1763CBF5B8 for ; Wed, 25 Jun 2025 06:39:29 +0000 (UTC) X-FDA: 83592971658.04.CB36E29 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf26.hostedemail.com (Postfix) with ESMTP id AC384140006 for ; Wed, 25 Jun 2025 06:39:26 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=GVif8qq9; spf=pass (imf26.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750833566; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=enc3lSmADpS1kaEHSMwsWMLVMCd1rhQj+POCyhSVB50=; b=sT336UGSYxgA1fah1lO+4YSykqX8ffObqAJqgA8M43AUb3tnO5lJhUq+u5hR1320y/Pdze J0MCvCk55p/E2cujG+2pZuVJt0MJ5uP4t74c6C2L6WHT3PpZvhvE/457ElpN1JHqibjJPx Ku4GuT+GeWf3Hz4EclMT5Ev1fckJuIs= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=GVif8qq9; spf=pass (imf26.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750833566; a=rsa-sha256; cv=none; b=yHuQkFMwTbsAk+KnKJAXGqTNpEBBrnoqzeXD6o9k2ZpEjCFAhN0yYLj4SigiqNXdZbAPcs GbIY8Vmm/pphM9xdEtZtcXl22q2UOWw1FsBW8xyviDrvY91FpvJIaZpotOhg1YLGdWxqQj 0Ir0j730JUo0PVzDkMBRsvQGWgQ3MH8= Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55OMZB4j006051; Wed, 25 Jun 2025 06:39:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=enc3lSmADpS1kaEHS MwsWMLVMCd1rhQj+POCyhSVB50=; b=GVif8qq9Lxb7XwVaYH3Yp1eydL89eOv0e TS8vmkC05yVC+XGMEo0t08T2d6gEsijmUE6zRubNq/6JKm/q28JP3e/y3WUQ6Mr+ C5sXDYDgCzV5QHx/pKnvjR4UOBlcsos59e4P2h0A9JQei331tFF21DWANZN3ZiP9 5pqUtaXVleEWpGqwzdalogogtqXccNHz4ZWAW1ThVJ1ipzDmAcH6ah6QeJjJyzKh n3JDW79yoi4Z6ThRDHZfT1lH90IgXhFv16M3zlZyqZpFIhKJwO0uURSsrdiiGcO1 517a9C8o24p5lKzpBXCrrPxEYwdzhBH1TTxIUINPFkN4rBu0ZDaBQ== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dm8jdgve-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 06:39:21 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55P5ZSgx030537; Wed, 25 Jun 2025 06:39:19 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e7f001vc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 06:39:19 +0000 Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55P6dJNh35062492 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 06:39:19 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0814F5890F; Wed, 25 Jun 2025 06:39:19 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DED4758907; Wed, 25 Jun 2025 06:39:13 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.36.18.35]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 06:39:13 +0000 (GMT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org, pasha.tatashin@soleen.com, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, x86@kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, sweettea-kernel@dorminy.me, christophe.leroy@csgroup.eu, mingo@kernel.org Subject: [PATCH v15 09/13] mm: Provide address parameter to p{te,md,ud}_user_accessible_page() Date: Wed, 25 Jun 2025 16:37:49 +1000 Message-ID: <20250625063753.77511-10-ajd@linux.ibm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250625063753.77511-1-ajd@linux.ibm.com> References: <20250625063753.77511-1-ajd@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDA0NSBTYWx0ZWRfX7iFN6zGSAgwb 8HcV84I6o9ERcq7DOti4fJczFsKNktJxLc7tyVLEMoTA6rBym46ZAhi0rojr5sXXHHxXzJmJI1Z dK5Cd71JdX8FHvwJKk6WGIWB2UHLlBbTj/eGynYfxPU2M0l405IaBtMNO5cCQ/+r/KIAza47O9l FedAtRr9gztHuxK3l93/h7bci333w3qrnWSTurPw1FYvuYqISg74Ue+XyHpm96y/kQZiXMPjMik SvRG1f6FZVlocS9zGlHRgn+xxgV89jNkZl4GVSiIeQjbs2egS4MH524VuiaeURZBBEGyvEt6uUM 64JtY66QwOC9rAmdMpiRlKtOvPYx/07zSB3gcmFdmEgmLhrUhR3NbElBOKUGokwEvmzfDIHpNZd fsWPnyNl4NX24h+y9l6ELVQXvSURrQQ7lrM+dRFxmI+apCoAqzo2+dSI+86GdBYA7X3Wg/ya X-Proofpoint-GUID: 7_34DLHsXIzQgzGQCR4RJy6muNG2f4Sa X-Proofpoint-ORIG-GUID: 7_34DLHsXIzQgzGQCR4RJy6muNG2f4Sa X-Authority-Analysis: v=2.4 cv=combk04i c=1 sm=1 tr=0 ts=685b9999 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=7ipKWUHlAAAA:8 a=VwQbUJbxAAAA:8 a=UZcZKg5ZrXFX2kyvyFQA:9 a=gpc5p9EgBqZVLdJeV_V1:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_01,2025-06-23_07,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=897 clxscore=1011 impostorscore=0 suspectscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250045 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: AC384140006 X-Stat-Signature: pdsi5uopbr5n8asbipctkmep5fhq5nt3 X-Rspam-User: X-HE-Tag: 1750833566-683086 X-HE-Meta: U2FsdGVkX1915EjOG8PuCi3DCH4u6f2EuFsQUYWGqo2eD0cNbE6qHFPS++chxOt9gUvXQEpOvdie1Pkjepy19X7Rg78YCW7cwBtwEONg1SFLXpisBkHtMxYCkb5kXnwqUV8h2Hi52mV0y+nMGzJ/VsP6zEw4dqwjBrH50sPNyaJ9lqhzogOcCs/iYPBPz4kx78mFincTv67oQC8fpDAIB6GgxoBhEyXC/Z1oiDu1ye6uxIaGaWIV0As6c0Izird7YEtLyE3V9JYhixiIfHV9QSwuccRvhG8hkBzgIAI380CwXGl8SZ2o94ebYLM07LZZMrtRPulbO8Ax3Qx3kJzYSHwBufgWogix4dMWwWgOxfOCWmpRX75TDnCj8LShopzMcUg2vBa81PqWTt/zF2F9b09eS/wLfAX4D//ecI+Ua2O4+2n86/E0kWd9Qkd/vxD0r8E2uHE7NlHK4JO/DCQsIWDkm+pWTjVCOLb/mvrQkaTSeA7Jz/abIsitp7tBTgoWXMWcm23Po0uPTXNbJ11WI0f/3bA+AeXFgtuIoGudL2bZAU3Sr/UcjyYbfkpPZCfcMIVgtErdQImeNc2W+TiAoHauXIBEhM9uIUiLgqvOmft19hRNi8iV7bgehwwk8CVOnjoIv3/NEOiIuDQ0p7BXrZObXVZnWqxUGOvNvRe2BxeGhA2qE2MDg7CZ0CYNPo4G7LMx51db18suFGzfxO92C7GW3oQQ3NQcB8p5n9gYX2Af+CEJ4bj7LJ2XpYUEl1rSBNwnsxn5gj9UiTShdjtzLSXJIHbiyzrymEAQTLxVnnWsrZ6PzmPUncUI8bp7+Cm5sZ6m+J0LMySInx4z9Zgu3qwnZ6eTnnu32o1nqhcOPpz0Gks0In7vFDnVqR0VUKs3t7E+mAO6LClB7j7yoCNOvRK0SvZijVoKpLKatUYDe0EBEkC/x7WvoVC7V/MhDhA/VNMxkTJU183tmGtvALP qMVnTSPO 0BTMaOF+KbhFY73Bb3WHAd8leFPUQmr6Ngg3z8+II+Lxw424x1AHTzWTd0wr9F0V9TP7ajnZEZbvI8dlAdMdZQJgBwzqvJ+yBi012yUnVeQpWNXJ3SLmhDzoHRmIer1R2bPf3sW6jeJOTuD5R/V+Jv6rXBI6sflV62MtioP7umZH/aSgszeVate72Ol1ntpyEgkMRreGD99oHPjtE6hSX0KmMZ5i3W6+RJlPQQBjEWxhLZh4RrxhUIyGNuAQobS4AaLw5QsR8T7R37Qh4zhRFcTPV0SbfXlLbsbRuiq/Nd8wJzuXrPMms33WxABN7ysfw2OJGP60rcazSljd5uikZ/2kmJlRxMUc+T3L3H3BgbpAKNr0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Rohan McLure On several powerpc platforms, a page table entry may not imply whether the relevant mapping is for userspace or kernelspace. Instead, such platforms infer this by the address which is being accessed. Add an additional address argument to each of these routines in order to provide support for page table check on powerpc. [ajd@linux.ibm.com: rebase on arm64 changes] Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin Acked-by: Ingo Molnar # x86 Signed-off-by: Andrew Donnellan --- v15: rebase --- arch/arm64/include/asm/pgtable.h | 6 +++--- arch/riscv/include/asm/pgtable.h | 6 +++--- arch/x86/include/asm/pgtable.h | 6 +++--- mm/page_table_check.c | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 4dae6fd51792..804606e4ef0e 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1314,17 +1314,17 @@ static inline int pgd_devmap(pgd_t pgd) #endif #ifdef CONFIG_PAGE_TABLE_CHECK -static inline bool pte_user_accessible_page(pte_t pte) +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) { return pte_valid(pte) && (pte_user(pte) || pte_user_exec(pte)); } -static inline bool pmd_user_accessible_page(pmd_t pmd) +static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr) { return pmd_valid(pmd) && !pmd_table(pmd) && (pmd_user(pmd) || pmd_user_exec(pmd)); } -static inline bool pud_user_accessible_page(pud_t pud) +static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr) { return pud_valid(pud) && !pud_table(pud) && (pud_user(pud) || pud_user_exec(pud)); } diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 99f8a05c595b..29126d47cf8d 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -834,17 +834,17 @@ static inline void set_pud_at(struct mm_struct *mm, unsigned long addr, } #ifdef CONFIG_PAGE_TABLE_CHECK -static inline bool pte_user_accessible_page(pte_t pte) +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) { return pte_present(pte) && pte_user(pte); } -static inline bool pmd_user_accessible_page(pmd_t pmd) +static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr) { return pmd_leaf(pmd) && pmd_user(pmd); } -static inline bool pud_user_accessible_page(pud_t pud) +static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr) { return pud_leaf(pud) && pud_user(pud); } diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 8de92004f3fb..60523dd7f3a9 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1726,17 +1726,17 @@ static inline bool arch_has_hw_nonleaf_pmd_young(void) #endif #ifdef CONFIG_PAGE_TABLE_CHECK -static inline bool pte_user_accessible_page(pte_t pte) +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) { return (pte_val(pte) & _PAGE_PRESENT) && (pte_val(pte) & _PAGE_USER); } -static inline bool pmd_user_accessible_page(pmd_t pmd) +static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr) { return pmd_leaf(pmd) && (pmd_val(pmd) & _PAGE_PRESENT) && (pmd_val(pmd) & _PAGE_USER); } -static inline bool pud_user_accessible_page(pud_t pud) +static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr) { return pud_leaf(pud) && (pud_val(pud) & _PAGE_PRESENT) && (pud_val(pud) & _PAGE_USER); } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 1c33439b9c0b..abc2232ceb39 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -151,7 +151,7 @@ void __page_table_check_pte_clear(struct mm_struct *mm, unsigned long addr, if (&init_mm == mm) return; - if (pte_user_accessible_page(pte)) { + if (pte_user_accessible_page(pte, addr)) { page_table_check_clear(pte_pfn(pte), PAGE_SIZE >> PAGE_SHIFT); } } @@ -163,7 +163,7 @@ void __page_table_check_pmd_clear(struct mm_struct *mm, unsigned long addr, if (&init_mm == mm) return; - if (pmd_user_accessible_page(pmd)) { + if (pmd_user_accessible_page(pmd, addr)) { page_table_check_clear(pmd_pfn(pmd), PMD_SIZE >> PAGE_SHIFT); } } @@ -175,7 +175,7 @@ void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, if (&init_mm == mm) return; - if (pud_user_accessible_page(pud)) { + if (pud_user_accessible_page(pud, addr)) { page_table_check_clear(pud_pfn(pud), PUD_SIZE >> PAGE_SHIFT); } } @@ -208,7 +208,7 @@ void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, for (i = 0; i < nr; i++) __page_table_check_pte_clear(mm, addr + PAGE_SIZE * i, ptep_get(ptep + i)); - if (pte_user_accessible_page(pte)) + if (pte_user_accessible_page(pte, addr)) page_table_check_set(pte_pfn(pte), nr, pte_write(pte)); } EXPORT_SYMBOL(__page_table_check_ptes_set); @@ -234,7 +234,7 @@ void __page_table_check_pmds_set(struct mm_struct *mm, unsigned long addr, for (i = 0; i < nr; i++) __page_table_check_pmd_clear(mm, addr + PMD_SIZE * i, *(pmdp + i)); - if (pmd_user_accessible_page(pmd)) + if (pmd_user_accessible_page(pmd, addr)) page_table_check_set(pmd_pfn(pmd), stride * nr, pmd_write(pmd)); } EXPORT_SYMBOL(__page_table_check_pmds_set); @@ -250,7 +250,7 @@ void __page_table_check_puds_set(struct mm_struct *mm, unsigned long addr, for (i = 0; i < nr; i++) __page_table_check_pud_clear(mm, addr + PUD_SIZE * i, *(pudp + i)); - if (pud_user_accessible_page(pud)) + if (pud_user_accessible_page(pud, addr)) page_table_check_set(pud_pfn(pud), stride * nr, pud_write(pud)); } EXPORT_SYMBOL(__page_table_check_puds_set); -- 2.49.0