From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E60432F3C3D for ; Wed, 13 Aug 2025 23:06:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755126379; cv=none; b=RmyH+Jt8vvU4LJ8xdm0CWIHU6zDtVUH+EABDvr9/AaLQQw8c6TbNDgeOiSllo9N2KqGmfN67gFPxhWC12slwIFiGWE5jcCasUfvPRDqkYnO8zZmck5oqCR8kdMzpu6xrU7ADPwOe1Hf4vEsa1hZNl5w7K1JpBWfWMCRpt6qyCSs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755126379; c=relaxed/simple; bh=RaL7LEtgGHid+Scon2Urzl58OMSTP4oyTdYkjynoEVU=; h=Date:To:From:Subject:Message-Id; b=bgdJtmZBs9OleAMc2rx95dJIT7xqymeXYLoBVn9zYFOiWyJvsQT7AUJ6nBjzplBWCI7eCjapInzgu1ZgYPr5ng4Gcdd8PwPGcwOX1OhXkPdUxHY091Q6JjEuETjeWoD3Z67yrUR5mUeBwJkHBSfmY/yZ+BGE7IxkgaD4cK57sQ4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=Og5o2fuF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="Og5o2fuF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B395DC4CEEB; Wed, 13 Aug 2025 23:06:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1755126378; bh=RaL7LEtgGHid+Scon2Urzl58OMSTP4oyTdYkjynoEVU=; h=Date:To:From:Subject:From; b=Og5o2fuFuD4cdpgIo+prh6pNbkCq//MuDKhr6UyYnxxJog0ylUkWtaG68DwGfNCte M6yDpXcmQ7ymU1TtEpRIrH53ZS7uuOoNEa4Eyrj+Zp/cwOswwD3wctCIFgX1QPE78Q BrD8Gzc3oWWuY6ChxB6nZaUwuKBI4Ss6T9rpHNuw= Date: Wed, 13 Aug 2025 16:06:18 -0700 To: mm-commits@vger.kernel.org,will@kernel.org,sweettea-kernel@dorminy.me,pasha.tatashin@soleen.com,nicholas@linux.ibm.com,mingo@kernel.org,maddy@linux.ibm.com,christophe.leroy@csgroup.eu,catalin.marinas@arm.com,ajd@linux.ibm.com,rmclure@linux.ibm.com,akpm@linux-foundation.org From: Andrew Morton Subject: + mm-provide-address-parameter-to-ptemdud_user_accessible_page.patch added to mm-new branch Message-Id: <20250813230618.B395DC4CEEB@smtp.kernel.org> Precedence: bulk X-Mailing-List: mm-commits@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The patch titled Subject: mm: provide address parameter to p{te,md,ud}_user_accessible_page() has been added to the -mm mm-new branch. Its filename is mm-provide-address-parameter-to-ptemdud_user_accessible_page.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-provide-address-parameter-to-ptemdud_user_accessible_page.patch This patch will later appear in the mm-new branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Note, mm-new is a provisional staging ground for work-in-progress patches, and acceptance into mm-new is a notification for others take notice and to finish up reviews. Please do not hesitate to respond to review feedback and post updated versions to replace or incrementally fixup patches in mm-new. Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Rohan McLure Subject: mm: provide address parameter to p{te,md,ud}_user_accessible_page() Date: Wed, 13 Aug 2025 16:26:10 +1000 On several powerpc platforms, a page table entry may not imply whether the relevant mapping is for userspace or kernelspace. Instead, such platforms infer this by the address which is being accessed. Add an additional address argument to each of these routines in order to provide support for page table check on powerpc. [ajd@linux.ibm.com: rebase on arm64 changes] Link: https://lkml.kernel.org/r/20250813062614.51759-10-ajd@linux.ibm.com Signed-off-by: Rohan McLure Signed-off-by: Andrew Donnellan Reviewed-by: Pasha Tatashin Acked-by: Ingo Molnar [x86] Cc: Christophe Leroy Cc: Madhavan Srinivasan Cc: Nicholas Miehlbradt Cc: Sweet Tea Dorminy Cc: Catalin Marinas Cc: Will Deacon Signed-off-by: Andrew Morton --- 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(-) --- a/arch/arm64/include/asm/pgtable.h~mm-provide-address-parameter-to-ptemdud_user_accessible_page +++ a/arch/arm64/include/asm/pgtable.h @@ -1290,17 +1290,17 @@ static inline int pmdp_set_access_flags( #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)); } --- a/arch/riscv/include/asm/pgtable.h~mm-provide-address-parameter-to-ptemdud_user_accessible_page +++ a/arch/riscv/include/asm/pgtable.h @@ -817,17 +817,17 @@ static inline void set_pud_at(struct mm_ } #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); } --- a/arch/x86/include/asm/pgtable.h~mm-provide-address-parameter-to-ptemdud_user_accessible_page +++ a/arch/x86/include/asm/pgtable.h @@ -1679,17 +1679,17 @@ static inline bool arch_has_hw_nonleaf_p #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); } --- a/mm/page_table_check.c~mm-provide-address-parameter-to-ptemdud_user_accessible_page +++ a/mm/page_table_check.c @@ -151,7 +151,7 @@ void __page_table_check_pte_clear(struct if (&init_mm == mm) return; - if (pte_user_accessible_page(pte)) { + if (pte_user_accessible_page(pte, addr)) { page_table_check_clear(pte_pfn(pte), PAGE_SIZE >> PAGE_SHIFT); } } @@ -163,7 +163,7 @@ void __page_table_check_pmd_clear(struct if (&init_mm == mm) return; - if (pmd_user_accessible_page(pmd)) { + if (pmd_user_accessible_page(pmd, addr)) { page_table_check_clear(pmd_pfn(pmd), PMD_SIZE >> PAGE_SHIFT); } } @@ -175,7 +175,7 @@ void __page_table_check_pud_clear(struct if (&init_mm == mm) return; - if (pud_user_accessible_page(pud)) { + if (pud_user_accessible_page(pud, addr)) { page_table_check_clear(pud_pfn(pud), PUD_SIZE >> PAGE_SHIFT); } } @@ -208,7 +208,7 @@ void __page_table_check_ptes_set(struct for (i = 0; i < nr; i++) __page_table_check_pte_clear(mm, addr + PAGE_SIZE * i, ptep_get(ptep + i)); - if (pte_user_accessible_page(pte)) + if (pte_user_accessible_page(pte, addr)) page_table_check_set(pte_pfn(pte), nr, pte_write(pte)); } EXPORT_SYMBOL(__page_table_check_ptes_set); @@ -234,7 +234,7 @@ void __page_table_check_pmds_set(struct for (i = 0; i < nr; i++) __page_table_check_pmd_clear(mm, addr + PMD_SIZE * i, *(pmdp + i)); - if (pmd_user_accessible_page(pmd)) + if (pmd_user_accessible_page(pmd, addr)) page_table_check_set(pmd_pfn(pmd), stride * nr, pmd_write(pmd)); } EXPORT_SYMBOL(__page_table_check_pmds_set); @@ -250,7 +250,7 @@ void __page_table_check_puds_set(struct for (i = 0; i < nr; i++) __page_table_check_pud_clear(mm, addr + PUD_SIZE * i, *(pudp + i)); - if (pud_user_accessible_page(pud)) + if (pud_user_accessible_page(pud, addr)) page_table_check_set(pud_pfn(pud), stride * nr, pud_write(pud)); } EXPORT_SYMBOL(__page_table_check_puds_set); _ Patches currently in -mm which might be from rmclure@linux.ibm.com are mm-page_table_check-reinstate-address-parameter-in-page_table_check_pud_set.patch mm-page_table_check-reinstate-address-parameter-in-page_table_check_pmd_set.patch mm-page_table_check-provide-addr-parameter-to-page_table_check_ptes_set.patch mm-page_table_check-reinstate-address-parameter-in-page_table_check_pud_clear.patch mm-page_table_check-reinstate-address-parameter-in-page_table_check_pmd_clear.patch mm-page_table_check-reinstate-address-parameter-in-page_table_check_pte_clear.patch mm-provide-address-parameter-to-ptemdud_user_accessible_page.patch powerpc-mm-add-pud_pfn-stub.patch powerpc-mm-implement-_user_accessible_page-for-ptes.patch powerpc-mm-use-set_pte_at_unchecked-for-internal-usages.patch powerpc-mm-support-page-table-check.patch