[PATCH 04/65] powerpc/mm: Use pte_user instead of opencoding
Balbir Singh
bsingharora at gmail.com
Thu Mar 31 12:45:51 AEDT 2016
On 27/03/16 19:23, Aneesh Kumar K.V wrote:
> We have common declaration in pte-common.h Add book3s specific one
> and switch to pte_user. In the later patch we will be switching
> _PAGE_USER to _PAGE_PRIVILEGED
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
> ---
> arch/powerpc/include/asm/book3s/64/pgtable.h | 5 +++++
> arch/powerpc/perf/callchain.c | 2 +-
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
> index 77d3ce05798e..4ac6221802ad 100644
> --- a/arch/powerpc/include/asm/book3s/64/pgtable.h
> +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
> @@ -185,6 +185,11 @@ extern struct page *pgd_page(pgd_t pgd);
> #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val((pte)) & ~_PAGE_PTE })
> #define __swp_entry_to_pte(x) __pte((x).val | _PAGE_PTE)
>
> +static inline bool pte_user(pte_t pte)
> +{
> + return (pte_val(pte) & _PAGE_USER);
> +}
Ideally this should be
return !!(pte_val(pte) & _PAGE_USER)
for consistency with page_present() and the fact that it returns a bool
> +
> #ifdef CONFIG_MEM_SOFT_DIRTY
> #define _PAGE_SWP_SOFT_DIRTY (1UL << (SWP_TYPE_BITS + _PAGE_BIT_SWAP_TYPE))
> #else
> diff --git a/arch/powerpc/perf/callchain.c b/arch/powerpc/perf/callchain.c
> index e04a6752b399..0071de76d776 100644
> --- a/arch/powerpc/perf/callchain.c
> +++ b/arch/powerpc/perf/callchain.c
> @@ -137,7 +137,7 @@ static int read_user_stack_slow(void __user *ptr, void *buf, int nb)
> offset = addr & ((1UL << shift) - 1);
>
> pte = READ_ONCE(*ptep);
> - if (!pte_present(pte) || !(pte_val(pte) & _PAGE_USER))
> + if (!pte_present(pte) || !pte_user(pte))
> goto err_out;
> pfn = pte_pfn(pte);
> if (!page_is_ram(pfn))
Makes sense
Acked-by: Balbir Singh <bsingharora at gmail.com>
More information about the Linuxppc-dev
mailing list