Re: [patch 05/16] mm: Allow special mappings with user access cleared

From: Kirill A. Shutemov
Date: Wed Dec 13 2017 - 09:43:47 EST


On Wed, Dec 13, 2017 at 03:34:55PM +0100, Peter Zijlstra wrote:
> On Wed, Dec 13, 2017 at 03:57:40PM +0300, Kirill A. Shutemov wrote:
> > On Wed, Dec 13, 2017 at 01:22:11PM +0100, Peter Zijlstra wrote:
>
> > > get_user_pages_fast() will ultimately end up doing
> > > pte_access_permitted() before getting the page, follow_page OTOH does
> > > not do this, which makes for a curious difference between the two.
> > >
> > > So I'm thinking we want the below irrespective of the VM_NOUSER patch,
> > > but with VM_NOUSER it would mean write(2) will no longer be able to
> > > access the page.
> >
> > Oh..
> >
> > We do call pte_access_permitted(), but only for write access.
> > See can_follow_write_pte().
>
> My can_follow_write_pte() looks like:
>
> static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
> {
> return pte_write(pte) ||
> ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
> }
>
> am I perchance looking at the wrong tee?

I'm looking at Linus' tree.

It was changed recently:
5c9d2d5c269c ("mm: replace pte_write with pte_access_permitted in fault + gup paths")

+Dan.

--
Kirill A. Shutemov