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 70F2B1F8ADF for ; Thu, 13 Mar 2025 22:48:28 +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=1741906108; cv=none; b=Nh6mEoKddbjYDqXebuOFqUuzZ0gIjFbL8wRR60eCKTRsTwEXzLJG8LgjYOdlwKhPekaLHRkQqz3p9eVTZ3d3X87WIBqyIw7yS9vWpWfX08mJ/5FYIKX0grxSoLR3HHxAxVsH6o8sa9KG5IGmD/6jfZm8Xp3UBTzGD0tYrM6LVLg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741906108; c=relaxed/simple; bh=PCOtJr4/P/oMheUS6f0zVdYY/YHeqlFd4uxe3IOLrtg=; h=Date:To:From:Subject:Message-Id; b=R7+LCm+68Cs9IVN32lSt70wNfsuGyQQenLNN0VLF4dPrg0gd67Ne8Hf9hnoXgfV8nGQxDyIxNqX/Q7ZojoJq/OPwkBo0wIN5GjyY2BGKL5svT4h5V+ssEFKlB7rOJHGWWA6tt2kkqhaLhsd0DbwhDs2bR+AXEuYmJZfhFdYbEPM= 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=CEptKMRH; 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="CEptKMRH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF96EC4CEDD; Thu, 13 Mar 2025 22:48:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1741906108; bh=PCOtJr4/P/oMheUS6f0zVdYY/YHeqlFd4uxe3IOLrtg=; h=Date:To:From:Subject:From; b=CEptKMRHFqg+S8jTI3VeYlHDD56tZyG+fgUHMLt83h7TMYTcozmGW/7sT4ekRtm8v zpqVN7nPUtZ+QXZlpSt/oTYjEsbX3STDk0LOEiom3tYMGNZcuVBy7yhSzOQW5C246A WCa9cKFq9ANc1cjaxUN1BJuOKPhK41lq9/vlY9W4= Date: Thu, 13 Mar 2025 15:48:27 -0700 To: mm-commits@vger.kernel.org,x86@kernel.org,sweettea-kernel@dorminy.me,pasha.tatashin@soleen.com,christophe.leroy@csgroup.eu,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-unstable branch Message-Id: <20250313224827.DF96EC4CEDD@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-unstable 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-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm 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, 12 Feb 2025 03:14:00 +1100 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/20250211161404.850215-8-ajd@linux.ibm.com Signed-off-by: Rohan McLure Signed-off-by: Andrew Donnellan Reviewed-by: Pasha Tatashin Cc: Christophe Leroy Cc: Sweet Tea Dorminy Cc: 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 @@ -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)); } --- a/arch/riscv/include/asm/pgtable.h~mm-provide-address-parameter-to-ptemdud_user_accessible_page +++ a/arch/riscv/include/asm/pgtable.h @@ -783,17 +783,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 @@ -1751,17 +1751,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, 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); @@ -230,7 +230,7 @@ void __page_table_check_pmd_set(struct m 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)); } @@ -244,7 +244,7 @@ void __page_table_check_pud_set(struct m 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)); } _ 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_pte_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