[PATCH v4 16/29] arm64: add pte_access_permitted_no_overlay()
Anshuman Khandual
anshuman.khandual at arm.com
Tue Jul 16 03:21:55 PDT 2024
On 5/3/24 18:31, Joey Gouly wrote:
> We do not want take POE into account when clearing the MTE tags.
>
> Signed-off-by: Joey Gouly <joey.gouly at arm.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Will Deacon <will at kernel.org>
Reviewed-by: Anshuman Khandual <anshuman.khandual at arm.com>
> ---
> arch/arm64/include/asm/pgtable.h | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
> index 5c970a9cca67..2449e4e27ea6 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -160,8 +160,10 @@ static inline pteval_t __phys_to_pte_val(phys_addr_t phys)
> * not set) must return false. PROT_NONE mappings do not have the
> * PTE_VALID bit set.
> */
> -#define pte_access_permitted(pte, write) \
> +#define pte_access_permitted_no_overlay(pte, write) \
> (((pte_val(pte) & (PTE_VALID | PTE_USER)) == (PTE_VALID | PTE_USER)) && (!(write) || pte_write(pte)))
> +#define pte_access_permitted(pte, write) \
> + pte_access_permitted_no_overlay(pte, write)
> #define pmd_access_permitted(pmd, write) \
> (pte_access_permitted(pmd_pte(pmd), (write)))
> #define pud_access_permitted(pud, write) \
> @@ -348,10 +350,11 @@ static inline void __sync_cache_and_tags(pte_t pte, unsigned int nr_pages)
> /*
> * If the PTE would provide user space access to the tags associated
> * with it then ensure that the MTE tags are synchronised. Although
> - * pte_access_permitted() returns false for exec only mappings, they
> - * don't expose tags (instruction fetches don't check tags).
> + * pte_access_permitted_no_overlay() returns false for exec only
> + * mappings, they don't expose tags (instruction fetches don't check
> + * tags).
> */
> - if (system_supports_mte() && pte_access_permitted(pte, false) &&
> + if (system_supports_mte() && pte_access_permitted_no_overlay(pte, false) &&
> !pte_special(pte) && pte_tagged(pte))
> mte_sync_tags(pte, nr_pages);
> }
More information about the linux-arm-kernel
mailing list