From patchwork Tue Feb 11 16:13:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969562 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 7B198C0219B for ; Tue, 11 Feb 2025 16:14:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B75D6B008A; Tue, 11 Feb 2025 11:14:43 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 13FC86B008C; Tue, 11 Feb 2025 11:14:43 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EFB396B0092; Tue, 11 Feb 2025 11:14:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D44526B008A for ; Tue, 11 Feb 2025 11:14:42 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 833831C6929 for ; Tue, 11 Feb 2025 16:14:42 +0000 (UTC) X-FDA: 83108162004.12.640B2CA Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf17.hostedemail.com (Postfix) with ESMTP id 2DC2040014 for ; Tue, 11 Feb 2025 16:14:39 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=mr2lydJA; spf=pass (imf17.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=1739290480; 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=uZG7yaQ4bZBn0z1b8C7/uIuy1qMqjNuKx2nlIDWDzI4=; b=vJYaROcg9Fq/C7m2adEJpuX2yZHnRuffLh1fvQvCa9hVa6Vi2U7foLo091Cz2S4dHRp8ko 2btyayjhivYg+WMAwz8SDyqUSWS5UWPA4M4Qjr1GYs3xOGw41nDZyDgfNCS2+n1rXa0e18 rm4ktjYJ9oxfsqDYpkdQ5I7hXJi3Up4= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=mr2lydJA; spf=pass (imf17.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=1739290480; a=rsa-sha256; cv=none; b=rGFpkwCbyNQ3od+v0Vtsdz7uloIbCSA7YCEBYg0vrHnMrkN2KLI8ekDxtjMrv0JmpjyVTk /43qOxgxkEXKnxQeOD9I1SoKGgNxRSCNz9OvvzRKepfmj8S6YflsaXULTGOfKCrNtW+sS5 oi8gusOsQ+bMFJJPvDACPWZfqMEQVsc= Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51B5OSTX027206; Tue, 11 Feb 2025 16:14:36 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=uZG7yaQ4bZBn0z1b8 C7/uIuy1qMqjNuKx2nlIDWDzI4=; b=mr2lydJAqkve28q4/0oCboUp/WD8Ywl1W ZceOxD0kFJJDvXos/977TT9JWmJzl2DVYZQFQrZ0Bbha6uyXD18tCTI7L4QdwETZ aOUYrP9uOy/ND/jZ+XUm0JgG2+GGNkWxga8MTZ1PQQ8D64DrNk6kFfMgeFMkPDb9 CrvfcgfSMCbcp4WdWGHfiXgzkr/C4qbFBbLYd7Uh0g26qqGpuB/Pfbm9haAuOgrY CDdIq4wcDBCd9mW22BMyOM1qGL8MxYLnD4XKUnR0sbmK5NpQkh+XHe1wkDfyhIeU KUp5pn6QBUxmAHBCCJLbhq5PTK7zhtf8LF+UYoy4IHi26wmb8g2tg== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r0c9aw17-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:36 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BCsjnj000914; Tue, 11 Feb 2025 16:14:35 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pjkn43gg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:35 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEXgw58327362 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:33 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4C3B82004B; Tue, 11 Feb 2025 16:14:33 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 73A9C20043; Tue, 11 Feb 2025 16:14:32 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:32 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 2BA686013D; Wed, 12 Feb 2025 03:14:27 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 01/11] mm/page_table_check: Reinstate address parameter in [__]page_table_check_pud_set() Date: Wed, 12 Feb 2025 03:13:54 +1100 Message-ID: <20250211161404.850215-2-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Td-AQtqu0Ne9Ra4i8CxIxImgWQGK1w1V X-Proofpoint-GUID: Td-AQtqu0Ne9Ra4i8CxIxImgWQGK1w1V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 bulkscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=955 spamscore=0 mlxscore=0 phishscore=0 priorityscore=1501 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspam-User: X-Rspamd-Queue-Id: 2DC2040014 X-Stat-Signature: sej8m5zpi5by9y1s7qfnmhjakfpw9dte X-Rspamd-Server: rspam03 X-HE-Tag: 1739290479-117569 X-HE-Meta: U2FsdGVkX1//GMoOEI5GSfMgZusHQCvIPwk6w1L06HenK37a4REUIKj3DGRCt5boY9SgsOsmXp6gl+9TKqkUgA5FJq3SMqCqvdVu5gUEFajY+vUdr54sJ/kOJ5HOHXePG5xMltzSyJ14Ic2aMh3E5YnY8aLwdCUy6mNywoBfmJ+XcxnH1NDrhi+56fFAONymRUm95NunzzcPDTJ+Ac30QBjrHnFpFv04luCqIVuFm6RTqWHeDlPtOQDY8/ch7CXuU17P3wA6vEfGZYsMoA+G2f0q9uzT7vMonow0Hd7GW7SqNPSQ5xYKydOT60k+1lSdzBKKmZN/S0xvSJvvpSp6CRI7B7IuZlHodl0jpe1RE2i3JQCnVjEcY+In544Igkp2eGVMgM2PzMxduEFKMmEwIIhxAAuEVtx+LJRkCc0a0Y3WXUtLHWrjOb2GPE4hAXSNXyJ7kLabmGlbl4r0soi7ZT7XX3O+iZxTA3vY+FNHljvGPOBO3rYSJpOjxuBh0NpTrWyRGTlJ7zbruPVia9v0Lk/DGLn3tlBkEdlHCiOI0wUHdFy+GSRKup3uKHkpC+XfjwDTCzLncGWN9pwMTnPTSFDPzDjU6d6+8N6Ti8M3EYXPWD6eWX/oKw+yRjJYyUU66DcJBJlGXW+C4UqKFXy9heeaHrvXdHNHWiJvawXoeyMJsIBCY8uD4fL9Q1GIKPbtELTLVA94vC9hoGuTqdp4TU5AfxxXw21ZyQ9K1Le4f3k1E4xOef4YB9snb/WjeNTKMpSQfa5w4BU2sk65aX98vhLzi0OXSTCpfxI/ViMXz6Im6DZGS1ioehRUUOKjbCKsNfcK1nQ3DSW75D4KsxdObI6uqEmahpIIcP8zAaM8mTv9p8ccHrs7e0cx9Du66gi1K751reUKsceG9ATfdRrfGS1VLWSNTCouQvyfzPGcRs+qAReo73cxzc69sNgkFZGG5ZXmjOUaLVZRIpleMl5 ZkgQ5ReI 3VpdGEg4CyXMk17eMwXOOlRWm1MWNew9QoNGrQ2zMeSydhkXhQrTVu2Po5+Sn41dXDXGbi+napj8h0MiCcVuitZnSNX5WvPGd7oWno8Fazwz3KnwFlmUfp3UUw+THkh/rdofevJjn79aE/ydMStlQSsrGhI5veB9TB40atyMPMZ1/lLXBWB84xv5jlpUYAFYEeQCI1JNm1CdRfGVMzRlpfVa/zNtK3TNhLe13RPf9+hZppM66MGZEZdDsKCcTzhE/9DfSNkEr4Beko6KLtQlU8xMeaCYBX8qf0+kXo7nyh0dOvAl3K+YNSkHu4FrpKzuDjh8j60bLFMDSailKOSnH6grOk2dDyPeqEGYo 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 This reverts commit 6d144436d954 ("mm/page_table_check: remove unused parameter in [__]page_table_check_pud_set"). Reinstate previously unused parameters for the purpose of supporting powerpc platforms, as many do not encode user/kernel ownership of the page in the pte, but instead in the address of the access. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase on riscv changes, remove riscv commit message comment] Signed-off-by: Andrew Donnellan --- v13: remove inaccurate comment on riscv in the commit message --- arch/arm64/include/asm/pgtable.h | 2 +- arch/riscv/include/asm/pgtable.h | 2 +- arch/x86/include/asm/pgtable.h | 2 +- include/linux/page_table_check.h | 11 +++++++---- mm/page_table_check.c | 3 ++- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 0b2a2ad1b9e8..f77bbaf3cf7c 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -661,7 +661,7 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, static inline void set_pud_at(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud) { - page_table_check_pud_set(mm, pudp, pud); + page_table_check_pud_set(mm, addr, pudp, pud); return __set_pte_at(mm, addr, (pte_t *)pudp, pud_pte(pud), PUD_SIZE >> PAGE_SHIFT); } diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 050fdc49b5ad..1a9f1091bd5c 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -778,7 +778,7 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, static inline void set_pud_at(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud) { - page_table_check_pud_set(mm, pudp, pud); + page_table_check_pud_set(mm, addr, pudp, pud); return __set_pte_at(mm, (pte_t *)pudp, pud_pte(pud)); } diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 593f10aabd45..e53674bb3814 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1287,7 +1287,7 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, static inline void set_pud_at(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud) { - page_table_check_pud_set(mm, pudp, pud); + page_table_check_pud_set(mm, addr, pudp, pud); native_set_pud(pudp, pud); } diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index 6722941c7cb8..d188428512f5 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -20,7 +20,8 @@ void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud); void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t pte, unsigned int nr); void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd); -void __page_table_check_pud_set(struct mm_struct *mm, pud_t *pudp, pud_t pud); +void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, + pud_t *pudp, pud_t pud); void __page_table_check_pte_clear_range(struct mm_struct *mm, unsigned long addr, pmd_t pmd); @@ -83,13 +84,14 @@ static inline void page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, __page_table_check_pmd_set(mm, pmdp, pmd); } -static inline void page_table_check_pud_set(struct mm_struct *mm, pud_t *pudp, +static inline void page_table_check_pud_set(struct mm_struct *mm, + unsigned long addr, pud_t *pudp, pud_t pud) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_pud_set(mm, pudp, pud); + __page_table_check_pud_set(mm, addr, pudp, pud); } static inline void page_table_check_pte_clear_range(struct mm_struct *mm, @@ -134,7 +136,8 @@ static inline void page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, { } -static inline void page_table_check_pud_set(struct mm_struct *mm, pud_t *pudp, +static inline void page_table_check_pud_set(struct mm_struct *mm, + unsigned long addr, pud_t *pudp, pud_t pud) { } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 509c6ef8de40..f14fef81c61d 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -249,7 +249,8 @@ void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd) } EXPORT_SYMBOL(__page_table_check_pmd_set); -void __page_table_check_pud_set(struct mm_struct *mm, pud_t *pudp, pud_t pud) +void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, + pud_t *pudp, pud_t pud) { if (&init_mm == mm) return; From patchwork Tue Feb 11 16:13:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969564 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 E45BDC0219E for ; Tue, 11 Feb 2025 16:14:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 080B6280003; Tue, 11 Feb 2025 11:14:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 007A5280001; Tue, 11 Feb 2025 11:14:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7557280003; Tue, 11 Feb 2025 11:14:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B78C0280001 for ; Tue, 11 Feb 2025 11:14:51 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 72CDCC056F for ; Tue, 11 Feb 2025 16:14:51 +0000 (UTC) X-FDA: 83108162382.02.5734737 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf16.hostedemail.com (Postfix) with ESMTP id 3A44E180014 for ; Tue, 11 Feb 2025 16:14:49 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Te4Hmwhn; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf16.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739290489; a=rsa-sha256; cv=none; b=SdSX4a0W6KR2wCUga73fe8tP33q9jG29WfRoGL4jOF0VVfJwmXNpVOofKuAInAhEbXn2GD 3jCIMEfMmfSYe+lj1Y5LaE+gfNzjjt/V1sXSN69iqQr96+QMNEAE3iHBdWlCGlfSUMOwap Qy4vvBo8KVMhNlJN3iPtlodXz8hjkls= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Te4Hmwhn; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf16.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739290489; 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=QAu6a8xxXm0IpwL0YbiHS3Fl/kmo/eshh+qP2eryxnU=; b=di/ZxB0a19qg2rGVi2W/6X50seOtB7xccDD5PJBuLyNWOzClQEaC5g5KmOppkSS03t209S jHQ9/7vluqEsSiypIS3yiEa0oXY5i7TW3uS7pfdjpsWGQVW8fDXh4SGBnDC4ZclrxzoC2X AcI66JtHbG2LAa/3jM7f29UGUayaxXs= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51B7WrBM015381; Tue, 11 Feb 2025 16:14:39 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=QAu6a8xxXm0IpwL0Y biHS3Fl/kmo/eshh+qP2eryxnU=; b=Te4HmwhnKFoK3M5fv0Xbpt3foB5rPUIjE /amV146aIAv1IotEmqRdXAAe6RaghuRhxHA7+tmcQEgLUop6KrrII0mqPnL+ZZ4y xpJ94plQGLS4uRLuPJccxix+hav21V8w7KO9rM0SBwmEQ4G8I566R5VmLQCDQIGs 6tHuO+0Wfxr7PrvM1KvZURfUrj9bWrgChCmUzHWR5MLyh5GG3qbIfuHGpXafgXUq 5dlpW6X/CBGhXnldWw5qthFj+AP2h3gXebdRtguB2WidM0a4td7PQrtoSRQGdPzN bvoI2GaGv6uPh7h8EQrsfFzJvi+Vt+JqW4faxM9OacyE5CZZGjuoQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r28ptds5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:39 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BEQPsC011642; Tue, 11 Feb 2025 16:14:38 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44pktjutxx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:38 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEaQE27525454 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:36 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8D7682004E; Tue, 11 Feb 2025 16:14:36 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE1D22004B; Tue, 11 Feb 2025 16:14:35 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:35 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id A16086014F; Wed, 12 Feb 2025 03:14:31 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 02/11] mm/page_table_check: Reinstate address parameter in [__]page_table_check_pmd_set() Date: Wed, 12 Feb 2025 03:13:55 +1100 Message-ID: <20250211161404.850215-3-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 2d_4Xt_okbNIp66LhUPHKOw_nGpA9356 X-Proofpoint-GUID: 2d_4Xt_okbNIp66LhUPHKOw_nGpA9356 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 impostorscore=0 mlxlogscore=821 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspam-User: X-Rspamd-Queue-Id: 3A44E180014 X-Rspamd-Server: rspam12 X-Stat-Signature: cffeyqkfgiu5cnw51ni3hfqk5p8cwaxg X-HE-Tag: 1739290489-731639 X-HE-Meta: U2FsdGVkX1+7nqgO30gJNJwjjUD4VBrOS7xnltGRxCuWeUlWvDUiVJgBXs3z3cAx04DPuDYkxLcLpMgi/XJXTe4jICfD5vm+pXbGB8GlPjWRHJnJ9CqX9q1TQtuoGqHG6gRctd3ELR4JLHKp4DqG8+PmY3g+h3tsON2yB0/jsVtx/ycE+qZZJ4iIFwC9O4/PxOddSqE7GIsrXAbShala8H82mwhpRLzO3dRMYQdvunFuXbOh65vUoxpVwyzC9G0KPQIuaECZmkUQgnINFcBC1zKZObiFgpsCVmqyz86DXYbFt8g5X8oPhpcqXGIOCB7qJq0yJF8fP1lEgCh0S3nB9LEHGs9GvfNJeKzXrW2kum26aP27gtLg1SwSZ0+ErAJJ280r++lwfKD5u/BxTbzvKPwnnTU3fXLaAkFOVcO0hCEE7mAjBmve/nGg01vgPP8/cyqyKo74GbiLCnGO4rylDps3B/8TeQS846OIFoGxZzX0+cGeIz4muTdTum/y8QlZdTMhBSIrPQOizDaHCpWhIqyG0DjI2TlE7D34ln91zy3DF6ofaJj6S2HlTkipnz1Wtmu9+qeow96FqckCYpDCVw89+pK2J8cx86Bbjr8UKs/fDB0/FWrBas8K7dY0pGBZNELIhQQMpWrnq52EhiAb4eXkNVKW+78cHQKPkty0FyZf2W9Ry5aPBmA5ln1EzaVsoITuI1NL8F6XGQUt8YuYntmHWXhILvFYqjEsrP0e7A3DLvlDL1iZoYo7JaksJE10seC0XRwVPNpq0kAdqKClZVoenkLMWIq4Le0r1k7oO9jaDEOBjjFuw3CIlJIrSAr4/iiybSItnIbngh0WZA3F0AyeqkNaP/mrjm7fbmF4z/XU7SH4qO08tt5NxB+mT0atxFFxtlH/70okIAqK2semjdJ4wy7462x7riqW/shxAmdcSXCes6uz8mgMN9WcRK+pNndoa6mI1nWV22fda54 CtQ69u7o VcSj8mLwp3E9bZdaK5fKkSHQPH/uXBBtChlpZJZ11v+YSDyB4S72fVwxj9xOUd5ZMCU/tRZ80fXSdsU6l5K6Gx2IsN3ZE3eft3TgSTovG2Xp/hKk364OV277/fL6k3Yl0SRauJEOxaNqoN60GVLdId0ePpMDrHpK18OkLJvoMEX/n7aA6UF+dQ4BNSEVlweqFVXD82nXwmNp9agPGPax3xxHZEO2t7wvSzSdMJJSrvt/4IXOcUCV+vE6/8p2aTAnRXhV75qmsTjaxTGMg5I6QIcAerSdxqOe/ElL15EzYVFJt2wwVKEdAwjPcrazPK8H62HD4s1g4iYcrdje/uVLecsnVI+e540Csz2NHkrIZJ/inrZKyVFAt8mpdmHN0o2WZO+aKkfYEPvbbh7nZt3+/cRVBv1opMMBu/CGSE3u6vYFbngQ7GNAkkMv91v836hUmltf2SOFhxNF3XUdU+chZtnx7MpD9Xy5jTLxl 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 This reverts commit a3b837130b58 ("mm/page_table_check: remove unused parameter in [__]page_table_check_pmd_set"). Reinstate previously unused parameters for the purpose of supporting powerpc platforms, as many do not encode user/kernel ownership of the page in the pte, but instead in the address of the access. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase on riscv and mm/page_table_check.c changes, remove riscv commit message comment] Signed-off-by: Andrew Donnellan --- v13: remove inaccurate comment on riscv in the commit message --- arch/arm64/include/asm/pgtable.h | 4 ++-- arch/riscv/include/asm/pgtable.h | 4 ++-- arch/x86/include/asm/pgtable.h | 4 ++-- include/linux/page_table_check.h | 11 +++++++---- mm/page_table_check.c | 3 ++- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index f77bbaf3cf7c..0262d9e966f9 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -653,7 +653,7 @@ static inline void __set_pte_at(struct mm_struct *mm, static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(mm, pmdp, pmd); + page_table_check_pmd_set(mm, addr, pmdp, pmd); return __set_pte_at(mm, addr, (pte_t *)pmdp, pmd_pte(pmd), PMD_SIZE >> PAGE_SHIFT); } @@ -1415,7 +1415,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, static inline pmd_t pmdp_establish(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(vma->vm_mm, pmdp, pmd); + page_table_check_pmd_set(vma->vm_mm, address, pmdp, pmd); return __pmd(xchg_relaxed(&pmd_val(*pmdp), pmd_val(pmd))); } #endif diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 1a9f1091bd5c..bd4092b72258 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -771,7 +771,7 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd) static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(mm, pmdp, pmd); + page_table_check_pmd_set(mm, addr, pmdp, pmd); return __set_pte_at(mm, (pte_t *)pmdp, pmd_pte(pmd)); } @@ -842,7 +842,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, static inline pmd_t pmdp_establish(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(vma->vm_mm, pmdp, pmd); + page_table_check_pmd_set(vma->vm_mm, address, pmdp, pmd); return __pmd(atomic_long_xchg((atomic_long_t *)pmdp, pmd_val(pmd))); } diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index e53674bb3814..366cdb9d75d9 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1280,7 +1280,7 @@ static inline pud_t native_local_pudp_get_and_clear(pud_t *pudp) static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(mm, pmdp, pmd); + page_table_check_pmd_set(mm, addr, pmdp, pmd); set_pmd(pmdp, pmd); } @@ -1425,7 +1425,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, static inline pmd_t pmdp_establish(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t pmd) { - page_table_check_pmd_set(vma->vm_mm, pmdp, pmd); + page_table_check_pmd_set(vma->vm_mm, address, pmdp, pmd); if (IS_ENABLED(CONFIG_SMP)) { return xchg(pmdp, pmd); } else { diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index d188428512f5..5855d690c48a 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -19,7 +19,8 @@ void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd); void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud); void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t pte, unsigned int nr); -void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd); +void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, + pmd_t *pmdp, pmd_t pmd); void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud); void __page_table_check_pte_clear_range(struct mm_struct *mm, @@ -75,13 +76,14 @@ static inline void page_table_check_ptes_set(struct mm_struct *mm, __page_table_check_ptes_set(mm, ptep, pte, nr); } -static inline void page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, +static inline void page_table_check_pmd_set(struct mm_struct *mm, + unsigned long addr, pmd_t *pmdp, pmd_t pmd) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_pmd_set(mm, pmdp, pmd); + __page_table_check_pmd_set(mm, addr, pmdp, pmd); } static inline void page_table_check_pud_set(struct mm_struct *mm, @@ -131,7 +133,8 @@ static inline void page_table_check_ptes_set(struct mm_struct *mm, { } -static inline void page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, +static inline void page_table_check_pmd_set(struct mm_struct *mm, + unsigned long addr, pmd_t *pmdp, pmd_t pmd) { } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index f14fef81c61d..099719d6f788 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -234,7 +234,8 @@ static inline void page_table_check_pmd_flags(pmd_t pmd) WARN_ON_ONCE(swap_cached_writable(pmd_to_swp_entry(pmd))); } -void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd) +void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, + pmd_t *pmdp, pmd_t pmd) { if (&init_mm == mm) return; From patchwork Tue Feb 11 16:13:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969563 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 0207BC0219B for ; Tue, 11 Feb 2025 16:14:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8BCC4280002; Tue, 11 Feb 2025 11:14:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 86C35280001; Tue, 11 Feb 2025 11:14:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6E602280002; Tue, 11 Feb 2025 11:14:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 50E18280001 for ; Tue, 11 Feb 2025 11:14:51 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0CB7346F09 for ; Tue, 11 Feb 2025 16:14:51 +0000 (UTC) X-FDA: 83108162382.21.20A1A8F Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf14.hostedemail.com (Postfix) with ESMTP id AC280100009 for ; Tue, 11 Feb 2025 16:14:48 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="RFTFB/us"; spf=pass (imf14.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=1739290488; a=rsa-sha256; cv=none; b=oUTNUBYVGmFg23+TlTuXzrmsR/FksL1pDSeeomHgMVvNYjUtiw8Q7xjb1cjcg3Vt/7cRJi RvxTlhqilF4VouF+YaEX899lXLT7jwyXz2Gv66dBOpMfTn/iZYE6fguvVDD34RoK0Se/T3 +VlTUGoud9tgxqnOqpXLAAhwryN6Zb4= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="RFTFB/us"; spf=pass (imf14.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=1739290488; 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=80YUf/ywVjSGbesvwbJLhfkbTLis/xViQMBOegskX9w=; b=uDn43pYUzIhdioX3sGGkPLXSnTvvUqgrNbAwqIBrXxPhJm1j8qJ9+hMi8fhTsfWVw+lmJ+ mijC8h33MzLx1UeJ3xcCDVNQUeyicEVGns+Jn44GkSnRZpRVtVIisVrlyX5+eC8IE/6FXi pVOcyxTG5GGV2Ky57NQ2HhY9Iq1oJro= Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BB4IrT023714; Tue, 11 Feb 2025 16:14:43 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=80YUf/ywVjSGbesvw bJLhfkbTLis/xViQMBOegskX9w=; b=RFTFB/usUKYR41QCdmJNN8Wqr9C5ezgoB yrm+uirbh+ebWsyaj2+jPmvpRw8caN6Zt56OqiCgdQdLPU53s/UorBllR8KkT1SZ kuInfPZPA0hKymKlWspURvkjHKmyH78L6QhWNQuaGehdVg5UlXIO1gfCvcfO0fJ8 rUN8UzZ+/oqI5g7ZOjmwrnDpBZn07jsz114ou8bPQ8SMdGZwrAuB8sgtZJNZPzCQ 9Ap/jV42/ciK5AW6rFTcB8m7w/pd+OQ75ju+CxRRYaM79jxFMtJHjy8CUfmW0ubH qKQq76T/gwqPWP3HKUf1xGqsSM/JpfIEBM1zYwhAW7C4UJBsRq4/w== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44qtkac2bq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:42 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BEWNNa028687; Tue, 11 Feb 2025 16:14:41 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 44pma1kps5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:41 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEebr47317282 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:40 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 05EDA20040; Tue, 11 Feb 2025 16:14:40 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 394002004B; Tue, 11 Feb 2025 16:14:39 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:39 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 0957A600AE; Wed, 12 Feb 2025 03:14:34 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 03/11] mm/page_table_check: Provide addr parameter to page_table_check_pte_set() Date: Wed, 12 Feb 2025 03:13:56 +1100 Message-ID: <20250211161404.850215-4-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: WnFAlpqnOaYlwekcppAuf1YDj6QbWgI5 X-Proofpoint-ORIG-GUID: WnFAlpqnOaYlwekcppAuf1YDj6QbWgI5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxscore=0 phishscore=0 lowpriorityscore=0 clxscore=1011 malwarescore=0 spamscore=0 mlxlogscore=574 impostorscore=0 bulkscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Stat-Signature: bbjeezp85shw619t4db4yhtte4nikc85 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: AC280100009 X-Rspam-User: X-HE-Tag: 1739290488-405956 X-HE-Meta: U2FsdGVkX1/z5oEVv3qbCQeoQqUH/8zFBcLs55zl6mxOR/U83r034s8KCIDeq16M5AEv2KBnUqlq/hQvBaj04b4e/jS3P7TcrUd7VNhZDP7BS6eIrQxyMi9CJl8/ovYOe7+zeObqzJrXVg5giIuln+ZuI2k1n45aQRR9TG6vkkDzaQ54W7dnth0BGbDGQf+Mv50S81KNoVMqF8h0n8onFOm8a3nUCUwgb+6mBAHzo22ys8k948lrl8zVU39HhsxvdR9p6ogqwfbAwBgCivVm46gwdQxDR3D/PE704ERqT2dKwFbH2qH5AIthoaX0Cip5CfU0v4sSthqUPrHyEpvKsQ8uzITBPdmWt4wgOL/X2XordDrbLOs0XMF19QjRwJK6zIVX6cLVk2/xl92HBVYimUkE/hYNtBt9GDiDXMal4ZAVDkH3yhtTEEroi/fbmWnDBB7yrMuleHIe5kGsXll6MGcrv7XNoDYd9JEEtaLXJ/0/iS6aq7YGf6gvc4Rs8Y57NqVDOcUT4UI1LpEIlqxF3miQsw4yL37z7f/JYF1zklCg2aW27LjmY4PbykQsW8cImCxWqt2GbfNdOmHG29f5Q+Q6xYXnvMMc/m45AyKhurEbxqX3zk7Qj8KYvtIEWyxoR6nj32BjQ/GRjUIGPCEjpmKcC4/jX0E5hHQX1SVwedCt/CQz8vaLFyq1Z4IqvYN3jrVa+Uzl95/hlEOv4nKYc2d7itA/9++doU9hKMVw+PzDqhjpCr9zevBzxXXed5UOYfqD/qkQpDbsbgJPpzn6WiD3axP62p6849FM0l+UAb2Y14Y1KR7FNgiJ8nnv32mTAVFXd9Ah8hPrg9aixhXKPzWSK29rXI5bPzNeKEwiMPFnsNHLuih2DaFgr9nTq8mdTpJK4AD6y+kmanh3Hv+gYmXZK4AwSo6oK93Fz9xYV+IcY66XBNfgDiDmIVnQb8EGygXwst1woY+2tRwWrJ1 Ka3mm9ae HMn0ikDnaYWL6QGuE+UFz0rlOQFdG01AGm9DbopZHI0GflP+nJ/tiq0gNb7HZANDOaTiXKAPq72Ey519XCBhX+EtwWq3qE2RSuo1MEgVno+2EuX83PDn42mHW8VA1cfB+lEiX4nFqKrWVOnH84+FErmyUlQO/zE2xeE6dS5uvV2CVJk9+JMcM3GQXFAVAXRozPfltB0ldOlQfBxbMTL0bis/6Mk2tOku4SXOwMOlYi58w/Hvawa+xaHd0qnAqeyMyd1rZBe70LUgkP80q2BmMSO278mwOrEkeGjoo3MVwWrcT2TGWtkymKHGobF5/RD5FBOi1D6LwEx/iOi5XelHTZ7qoTDU5Cw+CqGBvDolIQprx/aEmc6CIPRoMpqwaYjd+YR1L+wCSj7+Z4qsBJuyyCvOBukHLn1+fwYUP7VYjuJu0+XD5e8HsbU2uXklFnvHTovImDU+C1sDkNKn8Fc2tOlrVY9EkVpYo0p0n X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, 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 To provide support for powerpc platforms, provide an addr parameter to the page_table_check_pte_set() routine. This parameter is needed on some powerpc platforms which do not encode whether a mapping is for user or kernel in the pte. On such platforms, this can be inferred form the addr parameter. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase] Signed-off-by: Andrew Donnellan --- arch/arm64/include/asm/pgtable.h | 2 +- arch/riscv/include/asm/pgtable.h | 2 +- include/linux/page_table_check.h | 12 +++++++----- include/linux/pgtable.h | 2 +- mm/page_table_check.c | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 0262d9e966f9..78f579812c0c 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -424,7 +424,7 @@ static inline void __set_ptes(struct mm_struct *mm, unsigned long __always_unused addr, pte_t *ptep, pte_t pte, unsigned int nr) { - page_table_check_ptes_set(mm, ptep, pte, nr); + page_table_check_ptes_set(mm, addr, ptep, pte, nr); __sync_cache_and_tags(pte, nr); for (;;) { diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index bd4092b72258..9eb5f85dac82 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -562,7 +562,7 @@ static inline void __set_pte_at(struct mm_struct *mm, pte_t *ptep, pte_t pteval) static inline void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval, unsigned int nr) { - page_table_check_ptes_set(mm, ptep, pteval, nr); + page_table_check_ptes_set(mm, addr, ptep, pteval, nr); for (;;) { __set_pte_at(mm, ptep, pteval); diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index 5855d690c48a..9243c920ed02 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -17,8 +17,8 @@ void __page_table_check_zero(struct page *page, unsigned int order); void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte); void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd); void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud); -void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t pte, - unsigned int nr); +void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte, unsigned int nr); void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd); void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, @@ -68,12 +68,13 @@ static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud) } static inline void page_table_check_ptes_set(struct mm_struct *mm, - pte_t *ptep, pte_t pte, unsigned int nr) + unsigned long addr, pte_t *ptep, + pte_t pte, unsigned int nr) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_ptes_set(mm, ptep, pte, nr); + __page_table_check_ptes_set(mm, addr, ptep, pte, nr); } static inline void page_table_check_pmd_set(struct mm_struct *mm, @@ -129,7 +130,8 @@ static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud) } static inline void page_table_check_ptes_set(struct mm_struct *mm, - pte_t *ptep, pte_t pte, unsigned int nr) + unsigned long addr, pte_t *ptep, + pte_t pte, unsigned int nr) { } diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index 94d267d02372..2b25dd17ec67 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -285,7 +285,7 @@ static inline pte_t pte_advance_pfn(pte_t pte, unsigned long nr) static inline void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte, unsigned int nr) { - page_table_check_ptes_set(mm, ptep, pte, nr); + page_table_check_ptes_set(mm, addr, ptep, pte, nr); arch_enter_lazy_mmu_mode(); for (;;) { diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 099719d6f788..959e11e1af24 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -209,8 +209,8 @@ static inline void page_table_check_pte_flags(pte_t pte) WARN_ON_ONCE(swap_cached_writable(pte_to_swp_entry(pte))); } -void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t pte, - unsigned int nr) +void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte, unsigned int nr) { unsigned int i; From patchwork Tue Feb 11 16:13:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969565 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 DFE77C021A2 for ; Tue, 11 Feb 2025 16:14:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DEDA8280005; Tue, 11 Feb 2025 11:14:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D9E78280001; Tue, 11 Feb 2025 11:14:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA2C8280005; Tue, 11 Feb 2025 11:14:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 9ABCD280001 for ; Tue, 11 Feb 2025 11:14:53 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 56703160584 for ; Tue, 11 Feb 2025 16:14:52 +0000 (UTC) X-FDA: 83108162424.11.8194E2D Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf20.hostedemail.com (Postfix) with ESMTP id 0DECC1C0020 for ; Tue, 11 Feb 2025 16:14:49 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=a33UVj84; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf20.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739290490; a=rsa-sha256; cv=none; b=J5TjwowijAcRjipJMY3ELtpHEFrWy5eApbqWpwLsBk0rDIzKi4BHImOVQeTR0ZCiG+UVkW dUJOxOh4fxg0tGY2xUgky4ADWbOTMbPIuD6wmBx9RnFrRzk5O3t3yXoEwxKQsVskAiNocm Hpf9tNvQZdAmsDaidvKF0BL269rmZyQ= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=a33UVj84; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf20.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739290490; 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=cOJ/idVVi4I+VLd6I1wuyddjlEKwOnj76qUNXKgrS20=; b=eFy5pSTceiC4eX60XguAC+W0hOfzjdL6EpLfMJcHUyqwteNZVSLgbftn/q8Ph121s8PeTm N14sFBIAYK3dcZl70dYgn0x6e6156MnYOjjqMgAYOGzVtWjvqTDa0/Z6StK2u0OCRSp6gX bK6EowRNoLoBb8CoJwMUyv3RRZjtFOo= Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BFdWVF020597; Tue, 11 Feb 2025 16:14:46 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=cOJ/idVVi4I+VLd6I 1wuyddjlEKwOnj76qUNXKgrS20=; b=a33UVj84qwnewyiJlZiznhJDn5pprJXYS jn+/LhwGhNvfu1dUkv8PDPCjU13piKvxlDqX2+x5Ku9kUUpipSGvEXOp35g13la/ udt0TT8joq7M/pT9niT1xzoa46PQJ4QTTreIl6d1cNzqLjtrjO7i1GUEKhnLzaTG 1Gl5teJrTuqMHwXvwTI3FzqQqiVkiOPB1gqjIP+X8t2p4sFSCPG3THC2ibUCk3vK tn3+7nCGJf0voWA6lBUx0//ttIlVWJsyK1ldYHKfzrLXAzcm4T4perz55i78TrWg WymfwbAzhu93sXsi55dCVZnAkioB6L/cxVZXvrkaPEgg8ienMX07Q== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r9cu85ns-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:45 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BExDJs028735; Tue, 11 Feb 2025 16:14:45 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 44pma1kpsf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:45 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEhT141156968 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:43 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 86F7C2004E; Tue, 11 Feb 2025 16:14:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B8B9F2004D; Tue, 11 Feb 2025 16:14:42 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:42 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 7F0D86013D; Wed, 12 Feb 2025 03:14:38 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 04/11] mm/page_table_check: Reinstate address parameter in [__]page_table_check_pud_clear() Date: Wed, 12 Feb 2025 03:13:57 +1100 Message-ID: <20250211161404.850215-5-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: tjPDSFhAazrBNbpzNDvfJsZceKEWPyxT X-Proofpoint-GUID: tjPDSFhAazrBNbpzNDvfJsZceKEWPyxT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 suspectscore=0 adultscore=0 impostorscore=0 phishscore=0 bulkscore=0 mlxlogscore=947 mlxscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 0DECC1C0020 X-Stat-Signature: sqb94hcayc5mnapf4sotj6e34wdsrdg5 X-Rspam-User: X-HE-Tag: 1739290489-236057 X-HE-Meta: U2FsdGVkX19ad71XYuN5iACDNDcU+QFh2XyJM31lY13mo3PjMTIBjcRQ4mtlSeCctRK8ul6OV67wdFlcaFrdI8NDp7owV9Jah4DnpCocFrgVa+5FoBpsh+TNpd8GyMuwfimLDkxluMZmitYGU5TwXZuWgfwggFxQSto/maduCN86tPcRUeAA7eQdBcJ0Z84kDY05RabqIkhzcVwv6erHf44aUAacI7LR+DFkWSnU91KmRKd/qu5sqXrpY6IQQsGZxCMnSusRnIOwS8lNaFs/rpa2Te2Dy7EdmwFqXEY5thBtDm8PlOA4D/LigyciRTBumJ6RPxMgwUu71fmgEcajNSiNm/JFLB4bU+NHx1Ph7vBmlvwSJjGdmrgU9Z+WLky5OxznsglYsI+ThJnjqCr4QU25+EuVgXhjscW6QsQJwyC5mjRIcAE/Ix3yes6Hk46olEOc9BufsY/GPvdR803JMkuzrtkzHfUyta12BN2jqJh1Klu/vUnSczyiy0SxbWUPyuhbik4gVZyznK8s/31yQc87/k0LLZCteslEIpfIM0FtwoLSCuRz9dFh5rvd146HAvEeAnyfJJQYmppE0cgIe208vP4U2ZwI38YVgGU+mC514MVW5FZLW7x1mCUB0ne6dr7vVb1Uv9SYy0wAOrfAPt9zBjl4htLRxzDVwgh4BUeNn+J6hlnBScZwhyoq9EXWdR5OGnH9628LCbfsLv4ak7xn1Q96Nzke4kYBx3DZ/tfCQkegAKa/IF4R+B52141AuRbvZCks+pglP7Ul0KEKC5pgoTqFmw92VgbZ5DtbszWBGVbkXi2R+w21Rk1/m/DDTGaZepwmGJifJEXEF4vvpH8ZEmlP3vICq0tND3f2nMGex8I3F6iafUXD2Yj1JXp+TA/CUblhKjOE+BvgXUYiZRCwWuAsVBOzMrrNlqHvr/ehqOiXHOp08pr+5KnBDLmHgffpsL2DlvnPakDdeWX wwnTnqDz lEHyC5h3atrpOTtOuNAL5dVvQtN2/CQ2yi88a1mBAGWRjADU2JCSAHa6N0ojf8SOyEOQLot8WVyQgQXvUk9BsNoiC7Jp52SdJQWmD10tRnbcUbx9b/GWyFbwsHwjvo0Am/ErXfl4yU3gead8gJxJrMVQUmJZohmL1PLgZGjMI7HlAyf+qKmXw1Q0o4Phj3+Onq6WCXKlU/rUyJr0z6Z7JxYKdVGxjqy9ErXvxvXTO6wTmRl6Sn/hsWnGswZmbMPvXSc+tecoN/y19aCF6UGxPF4EWiH7sUvlWZZvEjmrBd3cFEIaNyyG6yIVM7HN4QJ5UX6rF+bYYD6JvNRA50qUPV34ApjZagQYOOcpzfwaNaPybN7xu8iUUxYvzxCFjR1BESwVFO0su59vHerLW7FlAfXTsZyxc8Awm3rmRc9N1+/uPmgmawR0Y8MOtd8CWDDmL8gRBmbCfSho9vXik1IFWWOVhPw== 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 This reverts commit 931c38e16499 ("mm/page_table_check: remove unused parameter in [__]page_table_check_pud_clear"). Reinstate previously unused parameters for the purpose of supporting powerpc platforms, as many do not encode user/kernel ownership of the page in the pte, but instead in the address of the access. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin Signed-off-by: Andrew Donnellan --- arch/x86/include/asm/pgtable.h | 2 +- include/linux/page_table_check.h | 11 +++++++---- include/linux/pgtable.h | 2 +- mm/page_table_check.c | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 366cdb9d75d9..5ec052ef07ff 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1398,7 +1398,7 @@ static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm, { pud_t pud = native_pudp_get_and_clear(pudp); - page_table_check_pud_clear(mm, pud); + page_table_check_pud_clear(mm, addr, pud); return pud; } diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index 9243c920ed02..d01a00ffc1f9 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -16,7 +16,8 @@ extern struct page_ext_operations page_table_check_ops; void __page_table_check_zero(struct page *page, unsigned int order); void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte); void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd); -void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud); +void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, + pud_t pud); void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte, unsigned int nr); void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, @@ -59,12 +60,13 @@ static inline void page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) __page_table_check_pmd_clear(mm, pmd); } -static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud) +static inline void page_table_check_pud_clear(struct mm_struct *mm, + unsigned long addr, pud_t pud) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_pud_clear(mm, pud); + __page_table_check_pud_clear(mm, addr, pud); } static inline void page_table_check_ptes_set(struct mm_struct *mm, @@ -125,7 +127,8 @@ static inline void page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) { } -static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud) +static inline void page_table_check_pud_clear(struct mm_struct *mm, + unsigned long addr, pud_t pud) { } diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index 2b25dd17ec67..e41cf0622aa4 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -648,7 +648,7 @@ static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm, pud_t pud = *pudp; pud_clear(pudp); - page_table_check_pud_clear(mm, pud); + page_table_check_pud_clear(mm, address, pud); return pud; } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 959e11e1af24..7c2f3f93e377 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -182,7 +182,8 @@ void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) } EXPORT_SYMBOL(__page_table_check_pmd_clear); -void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud) +void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, + pud_t pud) { if (&init_mm == mm) return; @@ -256,7 +257,7 @@ void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, if (&init_mm == mm) return; - __page_table_check_pud_clear(mm, *pudp); + __page_table_check_pud_clear(mm, addr, *pudp); if (pud_user_accessible_page(pud)) { page_table_check_set(pud_pfn(pud), PUD_SIZE >> PAGE_SHIFT, pud_write(pud)); From patchwork Tue Feb 11 16:13:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969566 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 E6467C0219B for ; Tue, 11 Feb 2025 16:14:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 36457280009; Tue, 11 Feb 2025 11:14:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 315F7280001; Tue, 11 Feb 2025 11:14:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1418E280009; Tue, 11 Feb 2025 11:14:57 -0500 (EST) 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 E7A4E280001 for ; Tue, 11 Feb 2025 11:14:56 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8296B1205EC for ; Tue, 11 Feb 2025 16:14:56 +0000 (UTC) X-FDA: 83108162592.16.D19219B Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf28.hostedemail.com (Postfix) with ESMTP id 3FD30C0013 for ; Tue, 11 Feb 2025 16:14:54 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Uv3YuVsS; spf=pass (imf28.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290494; 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=n7kQZXelDG4fZRq7pS2yHJHekeGMinwnJTPcPvTePhw=; b=rnCM5Yq2nQCI49z694ctAKw3xa/WGl5lxfp6CUqXyN37tRU9DzmfaIFRT/8YSCRiyRTXIJ irMaYNZjAtkaJnXbOxzM8kKw7BhgWg4oimIiitNTHmWTnjXrGwNdS/Z3/wbDDwRW8IF8qz KA+qkc0LdqHrKBb4zKMuMbcL7w0J/PA= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Uv3YuVsS; spf=pass (imf28.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290494; a=rsa-sha256; cv=none; b=iD4aNzYKWngcnuxFLgTbxV7iNdRA6eRaYujAiWXEdnSkdeBSdF/iGTvmvFZjsAZp23LO9d A4Z+BfwdZb8m8tA4f6pSvkWBhRS1B4aY4PDvyn1JY7gtxN/3M6HBaAorux4nyIXHbk6jJa 7u2iNXIcaHSkGvLtJI23Q3rLBpuj0jg= Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BEhL4G021663; Tue, 11 Feb 2025 16:14:50 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=n7kQZXelDG4fZRq7p S2yHJHekeGMinwnJTPcPvTePhw=; b=Uv3YuVsSDkXIO7Y0BzCyZVdMlb933nDKS ez/4oLSmkm+iH/kZnjD/OAlUn/pRAAI6TdJwSh/5wlfJU1WKeuTQ8Xcr+vynCtQN IMcMJwX48q9OEjgcOHC0KjDU6928Q4s3kfHnqXkwKbdEytVsi/RMlOeRvloTEATk 2CuG3fekLozu08mSRs8wU/dZfJ56ovF+UR7gYy470Y3CSMCmDWi0NmkqYVRsfwZo wAZmyMK+OEA0L7UtZQojd1BoDfiUVf76I4Ifm6vTuLLnsVuIidpi64wrnccTKMuz 0qoeCCeYKz4br1cwAnIuAqe6xYjIFrSZFNsA2k+kx1RO6CPaUX7QA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44qwd1bgcq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:49 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDg5xu016692; Tue, 11 Feb 2025 16:14:49 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pk3k41ad-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:49 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGElEb54395172 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:47 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 33A0D2004B; Tue, 11 Feb 2025 16:14:47 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5C30F20040; Tue, 11 Feb 2025 16:14:46 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:46 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id F421E6014F; Wed, 12 Feb 2025 03:14:41 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 05/11] mm/page_table_check: Reinstate address parameter in [__]page_table_check_pmd_clear() Date: Wed, 12 Feb 2025 03:13:58 +1100 Message-ID: <20250211161404.850215-6-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: KkIOWZMkccBghl2MaZOmtAFsiPh2bKFI X-Proofpoint-ORIG-GUID: KkIOWZMkccBghl2MaZOmtAFsiPh2bKFI X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 suspectscore=0 adultscore=0 impostorscore=0 mlxlogscore=900 clxscore=1015 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspam-User: X-Stat-Signature: 6yjf848hk7jbbngiiqwutpjcngn94dtr X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 3FD30C0013 X-HE-Tag: 1739290494-681688 X-HE-Meta: U2FsdGVkX19bAC12Fx9ptSQhcO4Y3oge3DQJt3sSNQ9O7nWeYQ3fcKQp8OScILF1CN5TB3MXXC2qk8enMf0/0y0vCoJZCIhv5HIqNRzYtqmSe791FpT4csIBjE97Wawx9CKbEBpG0i/l36noyS6Xm7LAXtSsStdxb3V4dHrVT8GEYW7c7Vr+3/ea/LeLHe4xs5pkkeg6gfINceO/8URGvjbta0MwMaTUjOaikf6GbkToiKHkQk/3f4khu044b3EBPcQJKd096KUKzLI2sjlaPXl3wjSRiOgI71OEOhrL3Skylw9PD7aOCqCQcMAixkKrMUwwRW8tGArXTkGlXKPp77sq+06zKbgtxQrbb8qwGZz0+ounxU/lVfPes/1oFcnuLWak5GUmBHYUelq2rJ3Zpuq22WE3sTfeWPCYHdKw/WIodzBjOPNJzXg5kpCwqSUswD8jK/HVsDKiU1WHCU/zoP06LyUwEQ+ABbP9bd1LbUYvpyEJxGEQc2thrwBKBBCTTYC5m+onWdEz8pk8tGEWvsVTNtG8A2URLid6Vn3Zt6iXSTuOlgeLO0Tbzymsq0uFlAL/dYLF8c4URG482p0gxxcMgyF0IlFbi8RtUts0aeTKFDMYMQ0RjOP9OIAWe7mOF1BhtorblK1fdNmytYSsJ9nVFRixJMlSxgzIT2I0HX2JYxQ1xoOy132B/h6hM1eWfEnmgcmbh8Dai1nrA65UG7Eai/9ZuldhOKN72BEFfl3ze1VsIR/LBxispejFJTl3r2ChDu9gMYr4+VYpdKTwyvn/2uOQM2PN9utT397Lx+pZ/tbuswewxlgVf6cZKAPTDqioea0USsEvmmAo7HojCTWQtyeDSXHdip4o+G03KIwv/5zmg7toXeBx1UxTCj/Gz/1hDlQaX/nwJV/NhqQlvSMcHwLkmwQ/b0SFLfOLMJJ8PQa4cqiPMihKb8e85J8vvcH5JxN0LvpfiJlMNo5 6SawAp2Z Czqn6L1Meay/vuWKgwo6IeFLo+9gTKJevMfOMZZyghZ8A7gb+F6XJEfqM+C2Z+Zsa3BdlfIeMWZOMO12z1D9PX3cVbBBffP5pXyb9I+iI8c7tuV6NTSOpryfQyXCYIY32bu3hpYMCDIHREShqaOJqz1svxd7V3Xh8rMwvEr6wnqbGmpXOmypTuhM5XfaEx2wPhSUnI+ZT5hl2t7F5OEsQRChFNIV/Ra11gOcW7YyXvL5MGC1tC1Fs/2BScbcthj+VoKiWommXyMwTmEiv1EQKLnINKPgF4xraHPHiLzepdUWYjZU06kexFF8e6CMzNg6yO8lMKGhxmL7r4cW2fxSi8zsaJriHEaVyWmHe 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 This reverts commit 1831414cd729 ("mm/page_table_check: remove unused parameter in [__]page_table_check_pmd_clear"). Reinstate previously unused parameters for the purpose of supporting powerpc platforms, as many do not encode user/kernel ownership of the page in the pte, but instead in the address of the access. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin Signed-off-by: Andrew Donnellan --- arch/arm64/include/asm/pgtable.h | 2 +- arch/riscv/include/asm/pgtable.h | 2 +- arch/x86/include/asm/pgtable.h | 2 +- include/linux/page_table_check.h | 11 +++++++---- include/linux/pgtable.h | 2 +- mm/page_table_check.c | 5 +++-- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 78f579812c0c..58108086f962 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1324,7 +1324,7 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, { pmd_t pmd = __pmd(xchg_relaxed(&pmd_val(*pmdp), 0)); - page_table_check_pmd_clear(mm, pmd); + page_table_check_pmd_clear(mm, address, pmd); return pmd; } diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 9eb5f85dac82..8cb0d5e2ee47 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -826,7 +826,7 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, { pmd_t pmd = __pmd(atomic_long_xchg((atomic_long_t *)pmdp, 0)); - page_table_check_pmd_clear(mm, pmd); + page_table_check_pmd_clear(mm, address, pmd); return pmd; } diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 5ec052ef07ff..9027467bbde7 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1387,7 +1387,7 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, unsigned long { pmd_t pmd = native_pmdp_get_and_clear(pmdp); - page_table_check_pmd_clear(mm, pmd); + page_table_check_pmd_clear(mm, addr, pmd); return pmd; } diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index d01a00ffc1f9..0a6ebfa46a31 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -15,7 +15,8 @@ extern struct page_ext_operations page_table_check_ops; void __page_table_check_zero(struct page *page, unsigned int order); void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte); -void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd); +void __page_table_check_pmd_clear(struct mm_struct *mm, unsigned long addr, + pmd_t pmd); void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, pud_t pud); void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, @@ -52,12 +53,13 @@ static inline void page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) __page_table_check_pte_clear(mm, pte); } -static inline void page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) +static inline void page_table_check_pmd_clear(struct mm_struct *mm, + unsigned long addr, pmd_t pmd) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_pmd_clear(mm, pmd); + __page_table_check_pmd_clear(mm, addr, pmd); } static inline void page_table_check_pud_clear(struct mm_struct *mm, @@ -123,7 +125,8 @@ static inline void page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) { } -static inline void page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) +static inline void page_table_check_pmd_clear(struct mm_struct *mm, + unsigned long addr, pmd_t pmd) { } diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index e41cf0622aa4..d34d0ec2d676 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -635,7 +635,7 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, pmd_t pmd = *pmdp; pmd_clear(pmdp); - page_table_check_pmd_clear(mm, pmd); + page_table_check_pmd_clear(mm, address, pmd); return pmd; } diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 7c2f3f93e377..12781847bec7 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -171,7 +171,8 @@ void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) } EXPORT_SYMBOL(__page_table_check_pte_clear); -void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd) +void __page_table_check_pmd_clear(struct mm_struct *mm, unsigned long addr, + pmd_t pmd) { if (&init_mm == mm) return; @@ -243,7 +244,7 @@ void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, page_table_check_pmd_flags(pmd); - __page_table_check_pmd_clear(mm, *pmdp); + __page_table_check_pmd_clear(mm, addr, *pmdp); if (pmd_user_accessible_page(pmd)) { page_table_check_set(pmd_pfn(pmd), PMD_SIZE >> PAGE_SHIFT, pmd_write(pmd)); From patchwork Tue Feb 11 16:13:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969567 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 4AD4CC021A1 for ; Tue, 11 Feb 2025 16:15:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 27D4028000A; Tue, 11 Feb 2025 11:15:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1DC98280001; Tue, 11 Feb 2025 11:15:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 057FF28000A; Tue, 11 Feb 2025 11:15:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D2DB6280001 for ; Tue, 11 Feb 2025 11:15:01 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 803A0160543 for ; Tue, 11 Feb 2025 16:15:01 +0000 (UTC) X-FDA: 83108162802.23.E378324 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf09.hostedemail.com (Postfix) with ESMTP id 5491114000E for ; Tue, 11 Feb 2025 16:14:58 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=cczKKLr8; spf=pass (imf09.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290498; 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=gKee4ge7BR94B61FAR09pk5NF6gMPK1FGw3x0T7i6oo=; b=BJHTh5aP6t4SUMg27dVNUxtusRp3Dt7La5UanfA3Dz92rJWuK+Qsmk/HQzc5t5Um4onAnC bKmENR0sFYjIBnkMY6M/08W6dwkKylhGqJ4Uhi4Q6DKbhZ6dt1UI220x+NRK/ndiphEQgM PcpLpHdKM1vLBqwJsiSs07fMf6BUqL0= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=cczKKLr8; spf=pass (imf09.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290498; a=rsa-sha256; cv=none; b=3QgUr2EXuQCl3JCXbC81w1D4NI29qMw1luohVcHLQ1PrkuNc0UpwjEi3y3DaxvXopfjj/a r2jUXZakK3Eg1kEILsQxsDvgZR+BDWFPoZ0dNfp0JMVbnGh0Wa+gEynG7PAsxoo/aw+lGm WnbjYmJ0/Xx/L+aLMyxLLWOva37EI7I= Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDvji6021621; Tue, 11 Feb 2025 16:14:54 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=gKee4ge7BR94B61FA R09pk5NF6gMPK1FGw3x0T7i6oo=; b=cczKKLr8yLhMgUdZtBxaJGqzoRFk3E7e7 uXFzZJEoETKQMfs28S+1hVR0nHRgtONmorFxp+Hy91l/E/4058aVEB3pKF4pC2ZD jhrd6RBl9b9ml55JQYD/F1k+MQXB95EgtRy4N3UNB+vBHVaMy8hQKyVYVU7ueRS2 Jns2lttYuWDOEbOTzdeBxNOGUXrY4EeWWC5G8d00952+fc2Fht93KnY/u6eh3LXg uHvfMsnQppucXJ8m3JiCU4M/wGXOWFhXsSJqvt8XQAMzHwkPMsVpJwmtUtu2E1ng x5ns6Owza3ky8HtftC63CWgGPEyypurLJojcuyqZ49iHLkaKoSm/Q== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44qwd1bgcv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:53 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDOHQJ001363; Tue, 11 Feb 2025 16:14:52 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pjkn43ht-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:52 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEobG56361370 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:50 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9018C2004B; Tue, 11 Feb 2025 16:14:50 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B8E2420040; Tue, 11 Feb 2025 16:14:49 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:49 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 761C6600AE; Wed, 12 Feb 2025 03:14:45 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 06/11] mm/page_table_check: Reinstate address parameter in [__]page_table_check_pte_clear() Date: Wed, 12 Feb 2025 03:13:59 +1100 Message-ID: <20250211161404.850215-7-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 3-pRwAoz3aMdzeoVBSyw5a0_Rw8WKaaH X-Proofpoint-ORIG-GUID: 3-pRwAoz3aMdzeoVBSyw5a0_Rw8WKaaH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 suspectscore=0 adultscore=0 impostorscore=0 mlxlogscore=650 clxscore=1015 priorityscore=1501 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5491114000E X-Stat-Signature: m35e5ofrsgug3bzdf1b1mo3cma7esrpe X-HE-Tag: 1739290498-241804 X-HE-Meta: U2FsdGVkX18iw/MOhf9Kj2ovp5IpmrdobgDhark39ptB8Xgxdtmj+cppq6IWe65aoMpOSwXSn0CxrISnnY2x3pF7LfF9kCLpMDd/In+v8jnJOvaz1UT7tTWz1N71xoDzU2uZfEAkkrOXgx+aPdLASYN/RjbYQgxUT50HUqW6cay24EVyqpPl43sEf3TnAnd1UaFeDB9EcNob6EqDUQGnOvzHQ9TH6jcg7Uy2h76Afv9crIc3nKYNGv4/chaETJE+R7wvHFQNILoT39V+b1mkPGZfNmCmtZXzvMBkzhzCykm67qcSy+S19D3Q6Ke/gEXnkq6V2QCYsixheEOD868vho4EGJ3arAFrL/D9kFNYCmMud4nZ3sXFtJpUqIM919U2wF54rumVcX5Pxguq0j1K+BofuFzsSwcfZMLYeF6QVD9JHRdqSXOOvy/7CJt+ryzum+JXTxS81+lxlC79DD8u04sDVKOdt2F/S5+BEA7whLWJhx+2SkDHZq2vzq6Bj5Y61bqAHUixecjQ7MOC3uT2Z7xnYrat6o7PdO8xtmTz6wRLXG9xmGBLDHAFNEdrrYZCVtVnC+eEwf/qye/QDVrAmbTaU7VS08cX0XTm6J+8yD31EF9iq3lKJbb4AcICi9d1MWFWVmeGf/gXpj6caTw2h/ofAIBoccBogfC+HAy1IyeSYp9vl/3A77LKgfdbOYK8CfkCwlI33d4c4lTFao+09tg0dOVOQbOSrHczkO19Ag7FWkOOEQ8PdesM4h+AMYuT96m/BLdchFF1Crj6cZTIKUWUnoJCUVfjHckH7JPPDFp+hVFXEco5MCagzohho5THBmqR30Fak3fZGApRhnwdfv1nbR11pEN0fvZfZ3902hjw5JQi5xp68KyjE2UVuZmLhn0vRFY9jkAwLY4xVu5xOKYJIdsQZYFuvUV3fUWeXNUqMCZobIspIuOBmXAU2ldj0OSzPoqjloSo1ICW+tz ePevpjQI EPKeXn292ag7JpGvg0uVNy3p8Z5XYj6ihWOxCqdHFDanXpF23rrtnwaBImN2lgMOQdfmLU0/6yxyh56zGk5nitW8H81i+pdo+Oy5RlvDJFjiVlUSZsx6k/Q3uEjc/egp2ooL9slfOmu5GVUqZUD3Ko6ZRTXoNrs9W+MGT5KT/wJ0Iq0Eh0wfM1Kibzl89miwfPMkkyCrgZlHF7BxJcGd7pU3htws+cT9OZCpMn6Iawfr15tbwfEb08M1UCyZ1cfrCks3hqCP9ID7hXHPosU9C5bmY4HN5z3sP5O7IkDeoZ7V9dR9TjTLwQk6b4vK+xmNBNQndlm1d1rANh3+/H66/m7hGFHqIqfKMcd5B 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 This reverts commit aa232204c468 ("mm/page_table_check: remove unused parameter in [__]page_table_check_pte_clear"). Reinstate previously unused parameters for the purpose of supporting powerpc platforms, as many do not encode user/kernel ownership of the page in the pte, but instead in the address of the access. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase and fix additional occurrence] Signed-off-by: Andrew Donnellan --- v13: fix an additional occurrence --- arch/arm64/include/asm/pgtable.h | 2 +- arch/riscv/include/asm/pgtable.h | 2 +- arch/x86/include/asm/pgtable.h | 4 ++-- include/linux/page_table_check.h | 11 +++++++---- include/linux/pgtable.h | 4 ++-- mm/page_table_check.c | 7 ++++--- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 58108086f962..f9effb5ddf1a 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1281,7 +1281,7 @@ static inline pte_t __ptep_get_and_clear(struct mm_struct *mm, { pte_t pte = __pte(xchg_relaxed(&pte_val(*ptep), 0)); - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, address, pte); return pte; } diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 8cb0d5e2ee47..c8d59feb4963 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -593,7 +593,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, { pte_t pte = __pte(atomic_long_xchg((atomic_long_t *)ptep, 0)); - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, address, pte); return pte; } diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 9027467bbde7..dbb376400ac7 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1318,7 +1318,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { pte_t pte = native_ptep_get_and_clear(ptep); - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, addr, pte); return pte; } @@ -1334,7 +1334,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, * care about updates and native needs no locking */ pte = native_local_ptep_get_and_clear(ptep); - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, addr, pte); } else { pte = ptep_get_and_clear(mm, addr, ptep); } diff --git a/include/linux/page_table_check.h b/include/linux/page_table_check.h index 0a6ebfa46a31..48721a4a2b84 100644 --- a/include/linux/page_table_check.h +++ b/include/linux/page_table_check.h @@ -14,7 +14,8 @@ extern struct static_key_true page_table_check_disabled; extern struct page_ext_operations page_table_check_ops; void __page_table_check_zero(struct page *page, unsigned int order); -void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte); +void __page_table_check_pte_clear(struct mm_struct *mm, unsigned long addr, + pte_t pte); void __page_table_check_pmd_clear(struct mm_struct *mm, unsigned long addr, pmd_t pmd); void __page_table_check_pud_clear(struct mm_struct *mm, unsigned long addr, @@ -45,12 +46,13 @@ static inline void page_table_check_free(struct page *page, unsigned int order) __page_table_check_zero(page, order); } -static inline void page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) +static inline void page_table_check_pte_clear(struct mm_struct *mm, + unsigned long addr, pte_t pte) { if (static_branch_likely(&page_table_check_disabled)) return; - __page_table_check_pte_clear(mm, pte); + __page_table_check_pte_clear(mm, addr, pte); } static inline void page_table_check_pmd_clear(struct mm_struct *mm, @@ -121,7 +123,8 @@ static inline void page_table_check_free(struct page *page, unsigned int order) { } -static inline void page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) +static inline void page_table_check_pte_clear(struct mm_struct *mm, + unsigned long addr, pte_t pte) { } diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index d34d0ec2d676..111c507c2c53 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -481,7 +481,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, { pte_t pte = ptep_get(ptep); pte_clear(mm, address, ptep); - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, address, pte); return pte; } #endif @@ -540,7 +540,7 @@ static inline void ptep_clear(struct mm_struct *mm, unsigned long addr, * No need for ptep_get_and_clear(): page table check doesn't care about * any bits that could have been set by HW concurrently. */ - page_table_check_pte_clear(mm, pte); + page_table_check_pte_clear(mm, addr, pte); } #ifdef CONFIG_GUP_GET_PXX_LOW_HIGH diff --git a/mm/page_table_check.c b/mm/page_table_check.c index 12781847bec7..4cb3e9ae57ff 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -160,7 +160,8 @@ void __page_table_check_zero(struct page *page, unsigned int order) page_ext_put(page_ext); } -void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte) +void __page_table_check_pte_clear(struct mm_struct *mm, unsigned long addr, + pte_t pte) { if (&init_mm == mm) return; @@ -222,7 +223,7 @@ void __page_table_check_ptes_set(struct mm_struct *mm, unsigned long addr, page_table_check_pte_flags(pte); for (i = 0; i < nr; i++) - __page_table_check_pte_clear(mm, ptep_get(ptep + i)); + __page_table_check_pte_clear(mm, addr, ptep_get(ptep + i)); if (pte_user_accessible_page(pte)) page_table_check_set(pte_pfn(pte), nr, pte_write(pte)); } @@ -280,7 +281,7 @@ void __page_table_check_pte_clear_range(struct mm_struct *mm, if (WARN_ON(!ptep)) return; for (i = 0; i < PTRS_PER_PTE; i++) { - __page_table_check_pte_clear(mm, ptep_get(ptep)); + __page_table_check_pte_clear(mm, addr, ptep_get(ptep)); addr += PAGE_SIZE; ptep++; } From patchwork Tue Feb 11 16:14:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969568 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 8638BC0219B for ; Tue, 11 Feb 2025 16:15:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1DAB28000B; Tue, 11 Feb 2025 11:15:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9572F280001; Tue, 11 Feb 2025 11:15:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7842528000B; Tue, 11 Feb 2025 11:15:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5781C280001 for ; Tue, 11 Feb 2025 11:15:04 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 187B4A0584 for ; Tue, 11 Feb 2025 16:15:04 +0000 (UTC) X-FDA: 83108162928.07.B96B045 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf26.hostedemail.com (Postfix) with ESMTP id E247D140005 for ; Tue, 11 Feb 2025 16:15:01 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Rjn2uTE6; spf=pass (imf26.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290502; a=rsa-sha256; cv=none; b=xtbdQF246rVWWegMNmoJfvpC79J6oGtKZflo3X5Q2BeeKkciPB0YGwQwnTYjPCX6oPlwO+ +wJSYuwSZS1WWTKW9Whmju5zbZajVBGdk3fAOEbTAiBfRmt4TAT+i/eAmDmML7+QiyS/2j mbKbaIzd/glhTDtMnwvAzVVRPHcdXJg= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=Rjn2uTE6; spf=pass (imf26.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290502; 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=SNb5jDb+pjD33ri/kExbiqb2gE5oR/ic9GZzWeFXRHs=; b=ktQm17Y2fMNeSGeEP8llTlRRnJNB0gpxZITvJkDwGRmMzTozLN3d+hnUkS2fExpZeIiGoh Xa377Ym3p1cvB7RszGe4C5ZseT5LfyXjRLj5osTb/R5kmS8ejlZVENI7AM5BB7Lg3mvS+C kSQIWIADdINSBfNb8to1V42wS24u7SU= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51B7WjxJ015161; Tue, 11 Feb 2025 16:14:58 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=SNb5jDb+pjD33ri/k Exbiqb2gE5oR/ic9GZzWeFXRHs=; b=Rjn2uTE61W10AkErUhUCxQeFSG/LnFBQF K104RzyvW6yWTaJ79oVyoyVKXgpNNmQManWTQAfz+zBfZ8UJwHGtq74jBVzUm9xW zkRdXOdyo/iTtlc4RpRGScUSdhmAr2eWZDwTHHJPNAIy0x4MGyC5vjS9WegpB1xI gMWRjPtdm4luZC/VRpk0DqgIzcp/2V/U7ysKhVKPE91oaLjWkPeEwu/bAIrtqABc CC9lhZjhgjaveFTUtfwzpUJR+QXBZkI1AcXq8Fl7lVZFxeQllZvIMRQRYiS5Jc0b 9crSLVM02J8EZjo1U9utvd0DuY0epIV7m0AbBxcX6xVtPnUV/ELHg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r28ptdtv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:56 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDaen5016752; Tue, 11 Feb 2025 16:14:56 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pk3k41ar-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:56 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEscv58261930 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:54 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4D7832004F; Tue, 11 Feb 2025 16:14:54 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 65EF32004B; Tue, 11 Feb 2025 16:14:53 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:53 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id EB8DD6013D; Wed, 12 Feb 2025 03:14:48 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 07/11] mm: Provide address parameter to p{te,md,ud}_user_accessible_page() Date: Wed, 12 Feb 2025 03:14:00 +1100 Message-ID: <20250211161404.850215-8-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: W_LJAdmwp2kiRgh8HAWZuWxC1gGID5rv X-Proofpoint-GUID: W_LJAdmwp2kiRgh8HAWZuWxC1gGID5rv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 impostorscore=0 mlxlogscore=776 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Stat-Signature: z7sbig161usiywg8zuapu7qhfk14685s X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E247D140005 X-Rspam-User: X-HE-Tag: 1739290501-190567 X-HE-Meta: U2FsdGVkX1/Fa1WyaIbM9LUrRPZ6/4Jk5n5y6ivmJyEPpej6BeVkb4s9HGGqp9TEAxNrobPxKJmHXWt2uCo+Pz5TZt4ygGAnA7EK6QQiv6IQsP2aFjFr5QdxUp6Xh7RLXi975i1cV+8DdEdqzuHi0NfEH8WeS3FezJDJ1dv3BQU/vUQsy2YdF9KiBpaEwjr9SPe4xZyU95FZfuAnydostlyvZEOBYUzAl51hCa2aKdphg4tGiLEnQQbRdfvrBS5S2H5MSZv3ztEvW58AFukbQLoE33kGXWHjNT/FrblFtHniytvpCT4gT0+QeUOo2A6spmL7ckPz4X9LIOGjpt2OJ6kXvgaf0oD3oWXXjvc9DXExFFtDPW4QzRhHwfX08tOqafIyKN3hVA/kAOvUKgbkI43o4ZVXDXV/6BytEQJ9jsaZDUovJaOnkUuuBOKFC/H+hBds+uPaZc7M6MwI/nASk6x/cYUPHroBGGCRHWYARDwLwiV5AvrxD7HQHlctzytgqoEfwci/MFYhJMu+WPoIVCqvIGS0p3zeAU0NjnZTOBIpfAeMQIwr5IZVHW/GXRoW3DOzzkKXYroP678uXxL51n8MluMSF/rQ+pI4jk6x3cDhz0dlOu1WjYeqMP8EA/RKuZsl9Et5ocx51UipK+yYH4s4gjGVW9gdShyD+Od8XjSGqQGZkifkDai0ST2n4l4bsxPXzx6FVzcT04FpWIp9UWyrDvOjYgY/2Ef09kVeQDXfhPbkk47zRuEq+BVLWjwZ5C6wpWFDuhQeDy+2Ct6+sEUxB9/xcrhayTQc7izV54I5Q+s8LaMX/BlKf8wgQoJx/+dSKN5Dnv8G60nApcmyEZF7mAgBbgmzXMDR+6n3lvbr1jk5szRk8ot9ag4PzoedGqy/wt9iL09SAIOlYlKW+mfYxiYu6sEoxKXiLx0znoKq0MfYnFu6naJ9cHpur5lPOnBsQfh9Skn+CSn+npu +N/86nMG IYXjkSsgyCzfEg6EXM9UPpLvs38nhkpQm0Pr7GxBRk6Fo8ishL9Hwr8NCFcx+tFqGCMzwVERDARJVTK+u4S7DrChLmB9oMjosgFK4dobzC3Fuu3hm2X381audo6y4YuI+Y/7xdD256uie5WczbZi/XQxIWqfRvLubhZICe9zoc6CPRbGSpH2rP6HRcqIdHU6l0HGsr95vgGtrQhMYQOduaMj2u/qVUthtgWl/iXQjOlbFaTnYg748Ylq6sf7ugaxSD4LfFBY7urB0zffr64IKDhZxTSPDUjL29MNbAyDqjwayGjZRO0V5pwzzPVmZERZPx5cvZ1v7iR8ea/QEDqscYj9BhucZx+geNK+C 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. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase on arm64 changes] Signed-off-by: Andrew Donnellan --- 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 f9effb5ddf1a..2079ff937627 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -1208,17 +1208,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 c8d59feb4963..a43813a37fa3 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -783,17 +783,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 dbb376400ac7..1624b7dc9b25 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1751,17 +1751,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 4cb3e9ae57ff..99066fe6a127 100644 --- a/mm/page_table_check.c +++ b/mm/page_table_check.c @@ -166,7 +166,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); } } @@ -178,7 +178,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); } } @@ -190,7 +190,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); } } @@ -224,7 +224,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, 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); @@ -246,7 +246,7 @@ void __page_table_check_pmd_set(struct mm_struct *mm, unsigned long addr, page_table_check_pmd_flags(pmd); __page_table_check_pmd_clear(mm, addr, *pmdp); - if (pmd_user_accessible_page(pmd)) { + if (pmd_user_accessible_page(pmd, addr)) { page_table_check_set(pmd_pfn(pmd), PMD_SIZE >> PAGE_SHIFT, pmd_write(pmd)); } @@ -260,7 +260,7 @@ void __page_table_check_pud_set(struct mm_struct *mm, unsigned long addr, return; __page_table_check_pud_clear(mm, addr, *pudp); - if (pud_user_accessible_page(pud)) { + if (pud_user_accessible_page(pud, addr)) { page_table_check_set(pud_pfn(pud), PUD_SIZE >> PAGE_SHIFT, pud_write(pud)); } From patchwork Tue Feb 11 16:14:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969569 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 C258AC0219B for ; Tue, 11 Feb 2025 16:15:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E8C1528000C; Tue, 11 Feb 2025 11:15:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DEB83280001; Tue, 11 Feb 2025 11:15:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C167528000C; Tue, 11 Feb 2025 11:15:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9F05E280001 for ; Tue, 11 Feb 2025 11:15:06 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 51D4D80507 for ; Tue, 11 Feb 2025 16:15:06 +0000 (UTC) X-FDA: 83108163012.25.FCD00B3 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf13.hostedemail.com (Postfix) with ESMTP id 2872D20016 for ; Tue, 11 Feb 2025 16:15:04 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=BGuQx3dE; spf=pass (imf13.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290504; a=rsa-sha256; cv=none; b=HWftC3RAW0Ig67i+D9z0sFJCAciECdvC2njZB+JpBf/4CLqDVZYd15/O1z2qAlSRHoNgjz O4My77JT+SPb9c31u8nGMQWnl+DuStOSPj5G8mKWwu3v5r3gJAb4ti7D3RMQdbmUoekg+M 9wyIH3mOIIBXSUH6mVPOV89Rin1VsYU= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=BGuQx3dE; spf=pass (imf13.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290504; 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=1/MffBCUm9m82jvA1NRJumlTJ0JqOPkuZuVYPCmtM1o=; b=dJqpiWVQ4bpMLB8c1mq7lOobBaDwcs/9024t73C97LLvtBdgKHgbvk8fqRvrQyZZTYcd61 y8Ir2yRtSX8IRIuagvUo4SGkCyTvRWcvyhpG6GpM/QW5MeFw6H48PnVwqM4ugIgANZUBIK 5dtRPPWhazGZBx9fO7OHP4sVcIGz240= Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51B7XsWl016779; Tue, 11 Feb 2025 16:15:00 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=1/MffBCUm9m82jvA1 NRJumlTJ0JqOPkuZuVYPCmtM1o=; b=BGuQx3dEXiml+/fqh7ikWhU7v+YLresXm UPWS8CFxBcuPO91eywCSG1ejECjYYJsMh45itoin99j+GWMW4AcTEYvSJWIL+gJt S/69iM7i1XJzu9s7nug6+XtKfCb0MCDKTvRdPxrrSLgEG2qXZCGP3Aaj50hehBHj tJHdTchwiheWkVRKOCLGHIENY/fjUa9USdEA4HSYR91HZ90rCNiZHRCbrdli8NEU PdmXcQC0HihTunCgGZehVKtsMVHfzeHwdLYuTgpLRzuXKXTAn25cBI4KlUQwdyZv cZaeo0DkNbFxsj9GuifJnBADlZzrx4W2wjDmsznOAG4SBfhPk9MsA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r28ptdub-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:00 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDg5xx016692; Tue, 11 Feb 2025 16:14:59 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pk3k41b1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:14:59 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGEvJv38535552 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:14:57 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7F0A320040; Tue, 11 Feb 2025 16:14:57 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0C72120043; Tue, 11 Feb 2025 16:14:57 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:14:57 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 6CB2B6014F; Wed, 12 Feb 2025 03:14:52 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 08/11] powerpc: mm: Add pud_pfn() stub Date: Wed, 12 Feb 2025 03:14:01 +1100 Message-ID: <20250211161404.850215-9-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: D1Ls5QKgaJ4jVjTDfpaP9Z9WwkAgttuP X-Proofpoint-GUID: D1Ls5QKgaJ4jVjTDfpaP9Z9WwkAgttuP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 impostorscore=0 mlxlogscore=742 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Stat-Signature: uy53sd7fyaqsubm35pumiq1un46pr5ye X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2872D20016 X-Rspam-User: X-HE-Tag: 1739290504-260659 X-HE-Meta: U2FsdGVkX19dCyQOEAkkzqkBPL5/flvb3X2fGFYYQ0xpXD87PGm5oiglsKuTxsZxBLb88lDTAHvg3pJaR6spwncPisYJfi1HkUaALry9N2kD3NdFMeJqIBRz7nlTGpVcPPT7hBpfS+ltibBAgstlfX4AcEPqG1zoyZOYZ6R1R9FSTRVAONQgpheOTQS5Q41YXboIRi7BGD0Q6bd/hfw5b8UrVkjPMArAaciPP+v11Ao0SsOKnQvaUpAtqDlHWSgzhkt+iSRriN8vfKde24QLZ1Pinl54JV7PFQo3MwO1WC6BjaIni9dDu00GsISjKhb5b1UncPRA4mZiyDYMFeNT0T3oJcl4OOHbzbC/wJEh87b7361YqKGVZm8b8XTerUKNpIGVfhnv6/SdrKg3zk3fhjCNC21FIAVz/UR44eEZFUaJCqJXDL88ZSY16ezN+gKHVabvkVEP6+UUqTq0u+dY3g1Os6n0elFC1P8gdES9OGmciO1EjQ7Rqe5Fjd5l+VjPU2D5yBb89quyJSbHRW5N+zRbg6cY8E23ENLrMFbYkHwvN9vBp2RkFFcxiid9o0oB5VMxcYv3MXm/M4pDbuid5w1Z/SUG8k/4PJ1Md9MZPTIMXOrtSu7UCKEKSM/eg/2pQE//y+/OTLu7T8fTyEmhsAala9SYHeEAK2ag1BDyfjlC6pVMPH8BzvXtq+TnRhIhFElM/wo+dMGW8Rsy/x8g7gu/DW190+uDTnQbO6AxjFJhcVwl6Ep64j5uDJWBOUbT7DDT/tBYu78mz4Asdo5w9tv6jfqmg+ZVaDKyhU4/7q41Oq3QySC9PIgMhOi4yJ4I/c1eo18C603zH+GUmM9E7p26NDMp1Iof+6S5K0j+mSqasjdh0K4LROzqUtgZrOSgN5CKEo6nKcUY8B5DJargIWHwJW8XMehyKM7GJJeP6FbtGFU32tfY147yvzTSgCzVw9hhYb4uy429+Qq0a5W Nzbaf/r4 Eg9G6Y6XE4rffEYPIHWCpv47y03r/5sBPDAIVewhY/4iatxXp6O9zRPgQCo6OG9Cx0xIUu04rKHSyGC+udBnh5/fgjBfrVqc3nT9SUooYKfLptEF8+CYNVY2l1hoWUHGLAC+E/kexX2Nf5Kb6efMgvJdLjepsWAWm2mLFX4IwTmSdpHcEYzkpCYeZRmEpw8hcgCXv8ZRCa8sxuM6AvfcHf1oYM7kIXbFaq79XvuJAzvK28sX9odOfskopOW9/e4hgJ0tZg9PZLHzpoY2Tz35Q5pSZRNtNHSlEl5oz+xoMYQg/x2HKn5xMUtdmqHiJtTbPUWJ351GxCERKW06N/7FIGvAxO+Wr83qCmqiJ 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 The page table check feature requires that pud_pfn() be defined on each consuming architecture. Since only 64-bit, Book3S platforms allow for hugepages at this upper level, and since the calling code is gated by a call to pud_user_accessible_page(), which will return zero, include this stub as a BUILD_BUG(). Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin Signed-off-by: Andrew Donnellan --- arch/powerpc/include/asm/pgtable.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index 2f72ad885332..bb43e4f46367 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -215,6 +215,15 @@ static inline bool arch_supports_memmap_on_memory(unsigned long vmemmap_size) #endif /* CONFIG_PPC64 */ +#ifndef pud_pfn +#define pud_pfn pud_pfn +static inline int pud_pfn(pud_t pud) +{ + BUILD_BUG(); + return 0; +} +#endif + #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_PGTABLE_H */ From patchwork Tue Feb 11 16:14:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969570 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 2AF2AC0219B for ; Tue, 11 Feb 2025 16:15:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ADEC228000E; Tue, 11 Feb 2025 11:15:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A8ED428000D; Tue, 11 Feb 2025 11:15:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E22B28000E; Tue, 11 Feb 2025 11:15:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 647E128000D for ; Tue, 11 Feb 2025 11:15:13 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E369A80507 for ; Tue, 11 Feb 2025 16:15:12 +0000 (UTC) X-FDA: 83108163264.26.3585A8A Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf29.hostedemail.com (Postfix) with ESMTP id 8C2FE12001C for ; Tue, 11 Feb 2025 16:15:10 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=HHoMa0o8; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf29.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739290510; a=rsa-sha256; cv=none; b=zyVkAaLASWJJfM6v3KNr2agjh7a9OlBc6SFQujizEWSntbCgi2spNExMOHGQXjlTtzp2PE nTDJ93T0o6cFCCjNfi6qotolGmcBSErMwGOD3v5+MuswCmZgQ5fC5YSeIOlkb5u432vkGp 2WBRgGhs7+fY2WAvEa/YEMSXXdn5Mio= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=HHoMa0o8; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf29.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=ajd@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739290510; 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=Vexylm3S2G+6zB4jqKJH1X6/6o/BLe2jY6/fCFVF7SE=; b=LTNb4qlcrYhhoUSi5jiRZCm8fOlLqYkttE9G6UNWEu4spslaI0QZ1/8eCFb6hCiuKN4oNd iT/WsE3dOW2WZjE9EaPOijRD2tv9hsS+zV/htslgA/xdhiZ1/tsPA6O4JQ6p9Fb2iBs1Er 0xRFcJYaqbKoxlCEqdfAJiMQjI6LnRM= Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BFdbrn020762; Tue, 11 Feb 2025 16:15:06 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=Vexylm3S2G+6zB4jq KJH1X6/6o/BLe2jY6/fCFVF7SE=; b=HHoMa0o8VorS6wYw/bcrGX0TC6fDwjAjN vC2S4qbhpeaQNy2XNsA1YlEfrUmIdO4XkHwyMZMAlNFp/zmS01T9VGGxFJhZUxfm OTVCFChNCZq9G1BKTcbGdYVdQaGL06/CWQsgvIXft3nVbi/BiF/JoRKWyKXTs9kG 1hubV1pHmGh1xAKIJENBjxbusa/5se3e7y83tuIoRzPJ3a6d8UQjZIXIJVWxec5l RxzDgv4ylgWa9yHR4LOmq2P4Ke/GqtBsUvWdyQ9kQ/QYWsUQrxhFzoAZRl01rQQM 1OY+ATtaez12t69mpcJK805CxVFwqlKYi8C9BLyEN/6OSoc43u/OA== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r9cu85py-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:04 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BCjcLc021886; Tue, 11 Feb 2025 16:15:03 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 44phksm8d2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:03 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGF1Y321365054 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:15:02 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DCC8A20043; Tue, 11 Feb 2025 16:15:01 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 71C062004B; Tue, 11 Feb 2025 16:15:01 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:15:01 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 20ABE600AE; Wed, 12 Feb 2025 03:14:55 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 09/11] powerpc: mm: Implement *_user_accessible_page() for ptes Date: Wed, 12 Feb 2025 03:14:02 +1100 Message-ID: <20250211161404.850215-10-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: vlGW9rIfjVbvenzIXU5vwx5D_ZYAnUeE X-Proofpoint-GUID: vlGW9rIfjVbvenzIXU5vwx5D_ZYAnUeE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 suspectscore=0 adultscore=0 impostorscore=0 phishscore=0 bulkscore=0 mlxlogscore=516 mlxscore=0 clxscore=1011 lowpriorityscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 8C2FE12001C X-Stat-Signature: c6ya9n4di3tzo1ihjkh5rty341ohftby X-Rspam-User: X-HE-Tag: 1739290510-85361 X-HE-Meta: U2FsdGVkX19+fcuNOOlL4mr6Bp2xI6U7l4MyYNzjWioxIrFMPS95pYe7B/ClNeXngxtWOFGe/ZgF6NGA6yCMvcYi7l9nHPfFabudRc5ym7pnRyeJ52i5/dlvI18TtQqV6/uecvec6DgUK/Jg8FhQFTw4E+gBz9mjsYRB75MPkDN/J0fCayvGE+AKTkiIIcf8LGNDKiR9LyEwZyr3vAkfhPkvMjHmK/j6+GMmlCdJT2Tw7FrsVvTeUgHbb+DJ/E6IFCNkwpLakIyoK7yKY2kEim9zZF6TRzs+dMWHEywnu4ZgMF81d/ac5YxKbxqqIdxfDFvGnPNlKBsEEK1o3bGfRGAEW5rIGlt/JO2mKA/YGt8j/0AkyZg672UHmN6T+rwSN+yooYQ0ZKQlj+R9/uqrZFQ9JpnP/CLvilM/VSmiXLtHtVAG8mcz/Krx8bnF/Jii97LznK+eS2qkq7YNG2RH5cwAKeROWgxPyb+Y44TOyz8XwHHTwvygEJs3e4Yqcx09mF5xWpKQQypk0069Et2UGDCHpOmuVA2i2O2gQqdCccGA60rnybogjpCG3fez5izDo3gkWduMiR/glPY+TlBtWyk7LKtT/j059LYnAu5GK62zt3XC5ouICllcyyBL2jxhIOC0ERERpfHzAJaesyM7Cu7O8b9uN07+XFp9RslQKZVOrjbczYNn0BSeAhthdqNrJq/PO4fYW0HuTNHZoTIOnlNTTwdjXGDjaKwFWPrQpjaAivoyYg26piZc03gT39EKG8S3oGUcoLFBePDkpmENTOUXy/8lVBGCcPbngSMYDdoMKcIYYQmVbRJkx+MuybQJGqBK6qbVpniKH5fqfApfUiYLr3La5rac2j479rmia3eahVGUm3ohNUw3kI3GyaMyzoDtXODxq0D4ClH+2NBOBXkA/WNx4/xFvaLBZO0EbMZ/ObVjeiIHWH9f7PcLdI9OomfPbozY5nv/3J7+dlH jbCE8nNV bosfTzs7Awi2QBRtQPHo36/xe9VTOPLpnWV3XvCAYdFBWgE99oQalPrJi+qeHyqRYJDmAfYL/RDR+2ETRCJV6o6nl32KZnVhRtL8mpigFKmJ+UcaiS20ace5IhXnTCUenNVcQ8bGlbLh6Ei/jBIa2H2Mq8MvdOzV88MEu/zigWZgx/bZiNJV2U3npqT6jbYmBC9YiajKYzywXcs45LdumzNDzpFFMP3zN7CMm96B80+hIX68wOchx8EgFBu9VDCe+CKcVxsPK6NIXxRRfkE5L+kk3dpdITjgg8Nzs1p/SB5k9g/EEDwDqAQ+ttjUgsECvRQzT97QcFlZY7DKod8HyspoX+dT/jJEFyrTXwZ8dFVvHROjJkE+Eg2g+v4bKBk60OsQdcRSY/X0mz8otwOmMaJcSyEHq3TIoDH5qSeI4krYPu8sI6Vlh/ct8RV5kh6aSA5BuQjYhOf5exWCSoEKMJvJGEA== 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 Page table checking depends on architectures providing an implementation of p{te,md,ud}_user_accessible_page. With refactorisations made on powerpc/mm, the pte_access_permitted() and similar methods verify whether a userland page is accessible with the required permissions. Since page table checking is the only user of p{te,md,ud}_user_accessible_page(), implement these for all platforms, using some of the same preliminary checks taken by pte_access_permitted() on that platform. Since commit 8e9bd41e4ce1 ("powerpc/nohash: Replace pte_user() by pte_read()") pte_user() is no longer required to be present on all platforms as it may be equivalent to or implied by pte_read(). Hence implementations of pte_user_accessible_page() are specialised. Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase and fix commit message] Signed-off-by: Andrew Donnellan --- arch/powerpc/include/asm/book3s/32/pgtable.h | 5 +++++ arch/powerpc/include/asm/book3s/64/pgtable.h | 17 +++++++++++++++++ arch/powerpc/include/asm/nohash/pgtable.h | 5 +++++ arch/powerpc/include/asm/pgtable.h | 8 ++++++++ 4 files changed, 35 insertions(+) diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h index 42c3af90d1f0..a2305d850fc9 100644 --- a/arch/powerpc/include/asm/book3s/32/pgtable.h +++ b/arch/powerpc/include/asm/book3s/32/pgtable.h @@ -437,6 +437,11 @@ static inline bool pte_access_permitted(pte_t pte, bool write) return true; } +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) +{ + return pte_present(pte) && !is_kernel_addr(addr); +} + /* Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. * diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 6d98e6f08d4d..754d4d525f0e 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -540,6 +540,11 @@ static inline bool pte_access_permitted(pte_t pte, bool write) return arch_pte_access_permitted(pte_val(pte), write, 0); } +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) +{ + return pte_present(pte) && pte_user(pte); +} + /* * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. @@ -1431,5 +1436,17 @@ static inline bool is_pte_rw_upgrade(unsigned long old_val, unsigned long new_va return false; } +#define pmd_user_accessible_page pmd_user_accessible_page +static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr) +{ + return pmd_leaf(pmd) && pte_user_accessible_page(pmd_pte(pmd), addr); +} + +#define pud_user_accessible_page pud_user_accessible_page +static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr) +{ + return pud_leaf(pud) && pte_user_accessible_page(pud_pte(pud), addr); +} + #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_PGTABLE_H_ */ diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h index 8d1f0b7062eb..1c3dfe2d6cc1 100644 --- a/arch/powerpc/include/asm/nohash/pgtable.h +++ b/arch/powerpc/include/asm/nohash/pgtable.h @@ -243,6 +243,11 @@ static inline bool pte_access_permitted(pte_t pte, bool write) return true; } +static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr) +{ + return pte_present(pte) && !is_kernel_addr(addr); +} + /* Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. * diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index bb43e4f46367..3cae32c74fed 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -224,6 +224,14 @@ static inline int pud_pfn(pud_t pud) } #endif +#ifndef pmd_user_accessible_page +#define pmd_user_accessible_page(pmd, addr) false +#endif + +#ifndef pud_user_accessible_page +#define pud_user_accessible_page(pud, addr) false +#endif + #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_PGTABLE_H */ From patchwork Tue Feb 11 16:14:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969571 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 0F24DC021A6 for ; Tue, 11 Feb 2025 16:15:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9317828000F; Tue, 11 Feb 2025 11:15:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8E1AC28000D; Tue, 11 Feb 2025 11:15:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7358F28000F; Tue, 11 Feb 2025 11:15:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 541DB28000D for ; Tue, 11 Feb 2025 11:15:16 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 10C1E4705C for ; Tue, 11 Feb 2025 16:15:16 +0000 (UTC) X-FDA: 83108163432.19.C162CD1 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf28.hostedemail.com (Postfix) with ESMTP id 7FC32C000D for ; Tue, 11 Feb 2025 16:15:13 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=iCI+86Qa; spf=pass (imf28.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=1739290513; 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=r4OZfx8Ch6jO+R8i/FyGZDWFbeHt/ASFZW5600pQVo4=; b=5mVFBulVBBR22lWo528hKHgASdyTrbYMWJc6vo6UGC2ChhPiVHWak3Lv+EES8QxsMqQlPC cutvoGLfIUB15OJII9z9sphTDEzQGIuo1vvkjywD6tGeTRy6AzDuOYsUBcUcW+1lTl4qLS pkAULp8uO/WZVSPfc4obWQlVqmnnXoU= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=iCI+86Qa; spf=pass (imf28.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=1739290513; a=rsa-sha256; cv=none; b=Ka8v8O3IMStjqpCJ2QDLMcn67WobwhY2DlP5eQ3sRLupbObwHrfu4hzMw1JCrKF8zj8Jaa UNlvrGiWGZHUIqbJebIfIk/yE0iW7EuMniga4r19JJRHpyc2+Jttfw0Cr6E94ZgTJfAbVg de34M6Qh228nCXU9x+dsUlG22UO6Hhg= Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BE4SOY023533; Tue, 11 Feb 2025 16:15:09 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=r4OZfx8Ch6jO+R8i/ FyGZDWFbeHt/ASFZW5600pQVo4=; b=iCI+86Qark3N09/Vjm0UoI7/7MU+o7P2J 8zGhz2fnUtRxeH1ALcGWwTXLZJVcXECMz2n17igAXI9qYV/7nEdyeElAvn32X4dA 7t8eKUhK43TiIw4wF95O/PL0QwkInSD+kZs39X8zfBj40WeRB8zXaEfoh+4QsMCG mmRvwNu8RNba4AXoDD/cxArDt+neJw2DrOtIizTX9cUKK9IRCCu9WTM6pFIlCUoc B3PTrjnXCoIJMS6wiuXn96lklKZJeJZ8wfYifULcQz5/x/Tw3GjvsGBOi8b8mhqC nwdbuQUGDj8mYtp+vT+3htz/AZJx9qMltCedCyl3EpiuqyMOTSvdg== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44qtkac2ds-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:08 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDBSV3001358; Tue, 11 Feb 2025 16:15:07 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pjkn43k2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:06 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGF4av37552530 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:15:04 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CF5FB2004D; Tue, 11 Feb 2025 16:15:04 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EA0E820043; Tue, 11 Feb 2025 16:15:03 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:15:03 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id AFCCC6013D; Wed, 12 Feb 2025 03:14:59 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me Subject: [PATCH v13 10/11] powerpc: mm: Use set_pte_at_unchecked() for internal usages Date: Wed, 12 Feb 2025 03:14:03 +1100 Message-ID: <20250211161404.850215-11-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: SA9oqZPbdfv-FJNFi_bHJSqLbghGZnbK X-Proofpoint-ORIG-GUID: SA9oqZPbdfv-FJNFi_bHJSqLbghGZnbK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxscore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0 mlxlogscore=674 impostorscore=0 bulkscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 7FC32C000D X-Stat-Signature: knhoe94udp8934d5wmj5cfzekftnadh6 X-Rspam-User: X-HE-Tag: 1739290513-709731 X-HE-Meta: U2FsdGVkX1+akEvt/+I+mveHj/z8hT6WytLjUvtt4VSjYc12zp/krKT8XU6ZoZfp9qNFILFf69NxRBWYOuoY/Yb9rQoVTCCMXELCv7lpbs1ccsqZqatrlWhw1QaMhSbDmNES2/K202TwmbS9oaz2w/DSl3Mgj4QSB9SmX2Mt99wweXq5Mmzso7Ed74JDQvKR93wiIX0TAljLnL6TMKW25brGoar7EPuhOcB2gJtcclzf9ie+aqs7mXzr1sgDOZrQdSG+Yd6wGzyqBSlfS+7CC4HudIf27GwRK2G0+KT/nSOlLZDn2Xym7cYb5QnP78fTm26k5MeJpZMxJ/d90HM/XJJnDuFdTCyjOuMPqdO3ZZp/30cC6oWEP6bMwJar66a/5q5ONRh5yTtvEYTk7S3dYhymIJpRMThcGXI0jhweONRS5LMwdN1AwON4DZBf+o3umtChqG8XykKj3QVqPcytO2Eh+dTyOetgxb72qEKGXIJ5hp8Jr4NC/R/TbeaKRPtHK3hFiiBKuLsMSwT1Vvj5/1XvNBFc9Y/qfGjbgKELCpJrtdGoPEHxqPBJU2lQKLLPAItM5UmcTCglAr2dEwsfrPGhIRZkZOtiiKBR5cMrQ9jBegXPyXPsN88Jl5un6Xb4WZSaBv8vqJtRXlHZChWXbDEjxif5OBlCAQZvy9rQJc/38f3XOTH7BuvoX2oAIYCPpskTtGr23oUpWq28CQkbIOGY+n1/aicSgKVmyIhjNVL7WJKecllhO1b3xP6l1t/s3lRTH7PCkhPKVYbedAbO5N3tQHHOuoF0KizMGRQipAO067xs2CN9F7HHLLwz5u5+RreBQx/ZJJZwEjaMrSdGAgjPLglWqN5xHqkeq9rwDgoioy3S13v8GmIfrjk9PZx4klftj5aEcjNZYZ4HNTVeog47AkrHrWquLgccNXJyGDtlhseHQWCgv8XTZaHTCQtwAAb3wK/i/NeVYWWpW7N 9vzAdMNu BLuiXoxjVmNIXXdeYMNnB3JIKWjJkxko9tvrNMzU+cEPy8b9HZVqMJ1D0XP/eUD6nLNc1cpCr/N72pXPyTeICUZwX/5Ak8G20EuFHcOzl56qCLx8j/po3t9YbFDnTwyfB/t6kmetUKOsNglZCG1OjmXFAf0m9v/gw5+Q6lqjDz/zZpc7jCzQTqfNuHHqrOOZGgfX9jdSJLyiS6eWl+YdWPmBDK9eIq7E16Ut+Dl2TdVXiDGBZ/ZwBOVGH0+nNfOrq4wvUiWAIsSC/3mVkDOj8PLbRAAm60IyYcHB2 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 In the new set_ptes() API, set_pte_at() (a special case of set_ptes()) is intended to be instrumented by the page table check facility. There are however several other routines that constitute the API for setting page table entries, including set_pmd_at() among others. Such routines are themselves implemented in terms of set_ptes_at(). A future patch providing support for page table checking on powerpc must take care to avoid duplicate calls to page_table_check_p{te,md,ud}_set(). Allow for assignment of pte entries without instrumentation through the set_pte_at_unchecked() routine introduced in this patch. Cause API-facing routines that call set_pte_at() to instead call set_pte_at_unchecked(), which will remain uninstrumented by page table check. set_ptes() is itself implemented by calls to __set_pte_at(), so this eliminates redundant code. Signed-off-by: Rohan McLure [ajd: don't change to unchecked for early boot/kernel mappings] Signed-off-by: Andrew Donnellan --- v13: don't use the unchecked version for early-boot kernel mappings (Pasha) --- arch/powerpc/include/asm/pgtable.h | 2 ++ arch/powerpc/mm/book3s64/pgtable.c | 6 +++--- arch/powerpc/mm/book3s64/radix_pgtable.c | 6 +++--- arch/powerpc/mm/pgtable.c | 8 ++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index 3cae32c74fed..221cae4873b9 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -46,6 +46,8 @@ struct mm_struct; void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte, unsigned int nr); #define set_ptes set_ptes +void set_pte_at_unchecked(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte); #define update_mmu_cache(vma, addr, ptep) \ update_mmu_cache_range(NULL, vma, addr, ptep, 1) diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c index ce64abea9e3e..b4708b2cabba 100644 --- a/arch/powerpc/mm/book3s64/pgtable.c +++ b/arch/powerpc/mm/book3s64/pgtable.c @@ -129,7 +129,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr, WARN_ON(!(pmd_leaf(pmd))); #endif trace_hugepage_set_pmd(addr, pmd_val(pmd)); - return set_pte_at(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd)); + return set_pte_at_unchecked(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd)); } void set_pud_at(struct mm_struct *mm, unsigned long addr, @@ -146,7 +146,7 @@ void set_pud_at(struct mm_struct *mm, unsigned long addr, WARN_ON(!(pud_leaf(pud))); #endif trace_hugepage_set_pud(addr, pud_val(pud)); - return set_pte_at(mm, addr, pudp_ptep(pudp), pud_pte(pud)); + return set_pte_at_unchecked(mm, addr, pudp_ptep(pudp), pud_pte(pud)); } static void do_serialize(void *arg) @@ -557,7 +557,7 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, if (radix_enabled()) return radix__ptep_modify_prot_commit(vma, addr, ptep, old_pte, pte); - set_pte_at(vma->vm_mm, addr, ptep, pte); + set_pte_at_unchecked(vma->vm_mm, addr, ptep, pte); } #ifdef CONFIG_TRANSPARENT_HUGEPAGE diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c index 311e2112d782..1704381f5c3c 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -1586,7 +1586,7 @@ void radix__ptep_modify_prot_commit(struct vm_area_struct *vma, (atomic_read(&mm->context.copros) > 0)) radix__flush_tlb_page(vma, addr); - set_pte_at(mm, addr, ptep, pte); + set_pte_at_unchecked(mm, addr, ptep, pte); } int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot) @@ -1597,7 +1597,7 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot) if (!radix_enabled()) return 0; - set_pte_at(&init_mm, 0 /* radix unused */, ptep, new_pud); + set_pte_at_unchecked(&init_mm, 0 /* radix unused */, ptep, new_pud); return 1; } @@ -1644,7 +1644,7 @@ int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot) if (!radix_enabled()) return 0; - set_pte_at(&init_mm, 0 /* radix unused */, ptep, new_pmd); + set_pte_at_unchecked(&init_mm, 0 /* radix unused */, ptep, new_pmd); return 1; } diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index 61df5aed7989..4cc9af7961ca 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -224,6 +224,14 @@ void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, } } +void set_pte_at_unchecked(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte) +{ + VM_WARN_ON(pte_hw_valid(*ptep) && !pte_protnone(*ptep)); + pte = set_pte_filter(pte, addr); + __set_pte_at(mm, addr, ptep, pte, 0); +} + void unmap_kernel_page(unsigned long va) { pmd_t *pmdp = pmd_off_k(va); From patchwork Tue Feb 11 16:14:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Donnellan X-Patchwork-Id: 13969572 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 70232C0219E for ; Tue, 11 Feb 2025 16:15:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F4E2280011; Tue, 11 Feb 2025 11:15:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A437280010; Tue, 11 Feb 2025 11:15:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8685280011; Tue, 11 Feb 2025 11:15:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C944F280010 for ; Tue, 11 Feb 2025 11:15:36 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 340BB1605A8 for ; Tue, 11 Feb 2025 16:15:21 +0000 (UTC) X-FDA: 83108163642.09.5F465A1 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf08.hostedemail.com (Postfix) with ESMTP id AD938160007 for ; Tue, 11 Feb 2025 16:15:18 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="WEGfXe/R"; spf=pass (imf08.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290518; 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=orGoSo6n4n0YOyMRUSl/HRUPiNiDZ7IGMHDhm3e5E1E=; b=BF41T3e+71Bi4jOXDlIEj0rMYQJRMQIa9dnVKXLFVcZiZgDpopePnyxEZ0lIz+90hN6k9D D9npOa/L1qhRj8SpP9+F7hZK6iJRjJmaVt1YqpXCKSMLmGFA8c6qcS4/vwZMFBBLnwrSdY Kqk6RxXZ2IxgKQlzGmB24Pol2Qe9l40= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b="WEGfXe/R"; spf=pass (imf08.hostedemail.com: domain of ajd@linux.ibm.com designates 148.163.158.5 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=1739290518; a=rsa-sha256; cv=none; b=Hpav5Fie+AQxNyFm2zpehbpObXUvP/dTKwlQGplTR7g1eLCt9/YhyZLHxfgitoDejxG886 RswUQc13v5NqQSMSF+1NOtZswEAy9RBdNz8w0EtcoPsaac9egBTFzZ2xLJvUq9jM3n2Mrg eOvv7hWdrSFBEDZiJF07Xw9+5pycALw= Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51BFdlL6020922; Tue, 11 Feb 2025 16:15:12 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=orGoSo6n4n0YOyMRU Sl/HRUPiNiDZ7IGMHDhm3e5E1E=; b=WEGfXe/RtDUQ9mB/y9+1XV/V3WMwvUMUV zraNDtOiyZ5NwJQgUMG8+h1eYNCf/CxkN/Eupw0K8GjOnA5pmaDnYvMWslKAkkHC M/Spzw2/ubTEYPouSh7MX5L+c7wrnFaDdEWnsMlzq44yyN/HyPdXRuvNP/F1ORHu dZR8Eup6H71aMP91aSTomo1JrHjBcn0ojTY+sxP91rbGZQhRmPENHvQJO5f7aTjT bptRRU/nkO1iswTT/o6M/4dEU9LgJiL3qiqH6S6r5HUDDoYrue/1jTDFVVVkgLCO c5IQ/vjmpsLy1w5qirn5kpmwplK0SSRTNWK90vI07gIkvONx3YXhw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44r9cu85r4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:11 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51BDObmO016712; Tue, 11 Feb 2025 16:15:11 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44pk3k41cj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Feb 2025 16:15:10 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51BGF8jC49873348 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 11 Feb 2025 16:15:09 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CACC120049; Tue, 11 Feb 2025 16:15:08 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D9CC52004B; Tue, 11 Feb 2025 16:15:07 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.63.197.14]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 11 Feb 2025 16:15:07 +0000 (GMT) Received: from jarvis.ozlabs.ibm.com.com (unknown [9.150.7.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id F2511600D4; Wed, 12 Feb 2025 03:15:02 +1100 (AEDT) From: Andrew Donnellan To: linuxppc-dev@lists.ozlabs.org Cc: x86@kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com, sweettea-kernel@dorminy.me, Christophe Leroy Subject: [PATCH v13 11/11] powerpc: mm: Support page table check Date: Wed, 12 Feb 2025 03:14:04 +1100 Message-ID: <20250211161404.850215-12-ajd@linux.ibm.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211161404.850215-1-ajd@linux.ibm.com> References: <20250211161404.850215-1-ajd@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: oBGEa0RlBjsu6MhC2TPUaDn8eND483Vf X-Proofpoint-GUID: oBGEa0RlBjsu6MhC2TPUaDn8eND483Vf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-11_07,2025-02-11_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 suspectscore=0 adultscore=0 impostorscore=0 phishscore=0 bulkscore=0 mlxlogscore=756 mlxscore=0 clxscore=1011 lowpriorityscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502110106 X-Rspamd-Queue-Id: AD938160007 X-Stat-Signature: khpztfpw1q4nkdyba1zp7143eipynsnu X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1739290518-601387 X-HE-Meta: U2FsdGVkX1+y5z+ImsckqwmsOgqEo2GT+eaRsDWVJhsqFiwTXEMkl58SgQP1MEP228BYH/Y5VM9Ssj8lefgIcuHE5BscOdh+t5BL2Qc73bw2iCV3dmaHa4bVGkjwVHaDnV4E60MaQEgVVeoMY2cQd0bmmYtnJHQHA7d60czBWnSA0ZyWiiAJZyDwQCz/xycscD3BQQVvgkNGZmn4HLY77Rfh2yUliDyA5iKNTM7ZJ96oXbVPRPxW9jWS78ow7/iYGkBHbfjAHPXLb0oEIL2e8jiqvQrvb3ifHTVwBRb+vIehV3O99Shug0sQDsFujq2zjSZuq4Exqot1YW8EFEKZ+ZknmKWkUF+bG0unhgZi55KtQ+ygxd/tXLbnCOANl62KTJQRIAsC/0u0AuFC3oaBNONuFVOjhGPg201RtHYlYruay0+3Ma7swaT9CNwqC/MXp+xK9TLO5V2aIxqgIpVTNyf+q2xU7jhEAU5p6zA+iYn7ED+a8u+6YEQLzxmVGnNU1gz0nLCwmybe93nYVn50OcDNkaqjqCzlK9e4cPRHh6fmFhcH/X6O2+h/dK4Ww+rNOUYOu4Qft4kGj/bgaTTiQgDP/sHhMVRRL9LETPyxrjSxprdDDihy07gmSIHJSTmKaVb55y8PzfQK7ccB/khHt5gFf1C4kHJvk/0QYJZzHSclJpRcywee2JE/hJXBznAF+fVvQ9avNi0H3QymeHu5vbWle28B6d11xonTMFivrcgnteITsZ25ZdXbAn18xve+LGz8xDDZTPJdKlEPt8spfW2GDf+gBDJr+rHRj/DNLXCs+JLBwpXD+YHUhono3jwFzu3jbfHBhhvJUOq/1IejrKusBTzJp6sGSxOYzFlPSnotGQ6gsKqmBnmdY9cm/Amf1YL9dRYgqxqNvu5zi6WksOcNxWIMv1VHfzthCPcHlwTSugw+FrAFMyj0p2jvwrSTeH1Fmy4U71jcd454DVe TPgHbbUy 2aHcBhg73lIx/rX2243v4Gj9EbFyu7WcBdaRTZkk3rE8AbNBj1WBumMbWME3bTu9XRMh78hzYOS6K8ISuWLe/q9XXGbjK9oZIbyETpiBRMWt6a83LQLuB4Y6NRp69idLU6+7EYh4sMH5DDzDRnoMvuYcEOgDePIjjed3j9XGmQ3xDxa+L/CY4yrOLXZMWFlNPZlrj00kG4kt/0YHj2c85KVzfvwgwdjteYECUj0AXvZ67weludLMqNPykGNniHEUumO3lZeO60Di9srzesmPQ0tC1S8FAps6vZnUmCOWd55p27a7tv8n6TJe/R8QPFSGBgUb0/9f7+j+5xWf30mFgu2neWZtU1Lj3aKt5/gwgtAXhT+8= 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 creation and clearing of a page table mapping, instrument such calls by invoking page_table_check_pte_set and page_table_check_pte_clear respectively. These calls serve as a sanity check against illegal mappings. Enable ARCH_SUPPORTS_PAGE_TABLE_CHECK for all platforms. See also: riscv support in commit 3fee229a8eb9 ("riscv/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK") arm64 in commit 42b2547137f5 ("arm64/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK") x86_64 in commit d283d422c6c4 ("x86: mm: add x86_64 support for page table check") Reviewed-by: Christophe Leroy Signed-off-by: Rohan McLure Reviewed-by: Pasha Tatashin [ajd: rebase] Signed-off-by: Andrew Donnellan --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/book3s/32/pgtable.h | 7 ++- arch/powerpc/include/asm/book3s/64/pgtable.h | 45 +++++++++++++++----- arch/powerpc/include/asm/nohash/pgtable.h | 8 +++- arch/powerpc/mm/book3s64/hash_pgtable.c | 4 ++ arch/powerpc/mm/book3s64/pgtable.c | 11 +++-- arch/powerpc/mm/book3s64/radix_pgtable.c | 3 ++ arch/powerpc/mm/pgtable.c | 4 ++ 8 files changed, 68 insertions(+), 15 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 424f188e62d9..a990af9c17aa 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -171,6 +171,7 @@ config PPC select ARCH_STACKWALK select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC_BOOK3S || PPC_8xx + select ARCH_SUPPORTS_PAGE_TABLE_CHECK select ARCH_USE_BUILTIN_BSWAP select ARCH_USE_CMPXCHG_LOCKREF if PPC64 select ARCH_USE_MEMTEST diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h index a2305d850fc9..ad7febf75471 100644 --- a/arch/powerpc/include/asm/book3s/32/pgtable.h +++ b/arch/powerpc/include/asm/book3s/32/pgtable.h @@ -202,6 +202,7 @@ void unmap_kernel_page(unsigned long va); #ifndef __ASSEMBLY__ #include #include +#include /* Bits to mask out from a PGD to get to the PUD page */ #define PGD_MASKED_BITS 0 @@ -315,7 +316,11 @@ static inline int __ptep_test_and_clear_young(struct mm_struct *mm, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - return __pte(pte_update(mm, addr, ptep, ~_PAGE_HASHPTE, 0, 0)); + pte_t old_pte = __pte(pte_update(mm, addr, ptep, ~_PAGE_HASHPTE, 0, 0)); + + page_table_check_pte_clear(mm, addr, old_pte); + + return old_pte; } #define __HAVE_ARCH_PTEP_SET_WRPROTECT diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 754d4d525f0e..da07d604c275 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -145,6 +145,8 @@ #define PAGE_KERNEL_ROX __pgprot(_PAGE_BASE | _PAGE_KERNEL_ROX) #ifndef __ASSEMBLY__ +#include + /* * page table defines */ @@ -417,8 +419,11 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - unsigned long old = pte_update(mm, addr, ptep, ~0UL, 0, 0); - return __pte(old); + pte_t old_pte = __pte(pte_update(mm, addr, ptep, ~0UL, 0, 0)); + + page_table_check_pte_clear(mm, addr, old_pte); + + return old_pte; } #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL @@ -427,11 +432,16 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, pte_t *ptep, int full) { if (full && radix_enabled()) { + pte_t old_pte; + /* * We know that this is a full mm pte clear and * hence can be sure there is no parallel set_pte. */ - return radix__ptep_get_and_clear_full(mm, addr, ptep, full); + old_pte = radix__ptep_get_and_clear_full(mm, addr, ptep, full); + page_table_check_pte_clear(mm, addr, old_pte); + + return old_pte; } return ptep_get_and_clear(mm, addr, ptep); } @@ -1309,19 +1319,34 @@ extern int pudp_test_and_clear_young(struct vm_area_struct *vma, static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp) { - if (radix_enabled()) - return radix__pmdp_huge_get_and_clear(mm, addr, pmdp); - return hash__pmdp_huge_get_and_clear(mm, addr, pmdp); + pmd_t old_pmd; + + if (radix_enabled()) { + old_pmd = radix__pmdp_huge_get_and_clear(mm, addr, pmdp); + } else { + old_pmd = hash__pmdp_huge_get_and_clear(mm, addr, pmdp); + } + + page_table_check_pmd_clear(mm, addr, old_pmd); + + return old_pmd; } #define __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm, unsigned long addr, pud_t *pudp) { - if (radix_enabled()) - return radix__pudp_huge_get_and_clear(mm, addr, pudp); - BUG(); - return *pudp; + pud_t old_pud; + + if (radix_enabled()) { + old_pud = radix__pudp_huge_get_and_clear(mm, addr, pudp); + } else { + BUG(); + } + + page_table_check_pud_clear(mm, addr, old_pud); + + return old_pud; } static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h index 1c3dfe2d6cc1..36c79f39f47d 100644 --- a/arch/powerpc/include/asm/nohash/pgtable.h +++ b/arch/powerpc/include/asm/nohash/pgtable.h @@ -29,6 +29,8 @@ static inline pte_basic_t pte_update(struct mm_struct *mm, unsigned long addr, p #ifndef __ASSEMBLY__ +#include + extern int icache_44x_need_flush; #ifndef pte_huge_size @@ -122,7 +124,11 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - return __pte(pte_update(mm, addr, ptep, ~0UL, 0, 0)); + pte_t old_pte = __pte(pte_update(mm, addr, ptep, ~0UL, 0, 0)); + + page_table_check_pte_clear(mm, addr, old_pte); + + return old_pte; } #define __HAVE_ARCH_PTEP_GET_AND_CLEAR diff --git a/arch/powerpc/mm/book3s64/hash_pgtable.c b/arch/powerpc/mm/book3s64/hash_pgtable.c index 988948d69bc1..c1c25d46dd16 100644 --- a/arch/powerpc/mm/book3s64/hash_pgtable.c +++ b/arch/powerpc/mm/book3s64/hash_pgtable.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -231,6 +232,9 @@ pmd_t hash__pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long addres pmd = *pmdp; pmd_clear(pmdp); + + page_table_check_pmd_clear(vma->vm_mm, address, pmd); + /* * Wait for all pending hash_page to finish. This is needed * in case of subpage collapse. When we collapse normal pages diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c index b4708b2cabba..3702d5bc7a5a 100644 --- a/arch/powerpc/mm/book3s64/pgtable.c +++ b/arch/powerpc/mm/book3s64/pgtable.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -129,6 +130,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr, WARN_ON(!(pmd_leaf(pmd))); #endif trace_hugepage_set_pmd(addr, pmd_val(pmd)); + page_table_check_pmd_set(mm, addr, pmdp, pmd); return set_pte_at_unchecked(mm, addr, pmdp_ptep(pmdp), pmd_pte(pmd)); } @@ -146,6 +148,7 @@ void set_pud_at(struct mm_struct *mm, unsigned long addr, WARN_ON(!(pud_leaf(pud))); #endif trace_hugepage_set_pud(addr, pud_val(pud)); + page_table_check_pud_set(mm, addr, pudp, pud); return set_pte_at_unchecked(mm, addr, pudp_ptep(pudp), pud_pte(pud)); } @@ -181,12 +184,14 @@ void serialize_against_pte_lookup(struct mm_struct *mm) pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp) { - unsigned long old_pmd; + pmd_t old_pmd; VM_WARN_ON_ONCE(!pmd_present(*pmdp)); - old_pmd = pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, _PAGE_INVALID); + old_pmd = __pmd(pmd_hugepage_update(vma->vm_mm, address, pmdp, _PAGE_PRESENT, _PAGE_INVALID)); flush_pmd_tlb_range(vma, address, address + HPAGE_PMD_SIZE); - return __pmd(old_pmd); + page_table_check_pmd_clear(vma->vm_mm, address, old_pmd); + + return old_pmd; } pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address, diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c index 1704381f5c3c..cc0dda11a640 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -1454,6 +1455,8 @@ pmd_t radix__pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long addre pmd = *pmdp; pmd_clear(pmdp); + page_table_check_pmd_clear(vma->vm_mm, address, pmd); + radix__flush_tlb_collapsed_pmd(vma->vm_mm, address); return pmd; diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index 4cc9af7961ca..ed46151ae1d9 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -206,6 +207,9 @@ void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, * and not hw_valid ptes. Hence there is no translation cache flush * involved that need to be batched. */ + + page_table_check_ptes_set(mm, addr, ptep, pte, nr); + for (;;) { /*