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.ku...@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 <bsinghar...@gmail.com> _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev