mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Laurent Dufour <ldufour@linux.vnet.ibm.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: paulmck@linux.vnet.ibm.com, peterz@infradead.org,
	akpm@linux-foundation.org, ak@linux.intel.com, mhocko@kernel.org,
	dave@stgolabs.net, jack@suse.cz,
	Matthew Wilcox <willy@infradead.org>,
	benh@kernel.crashing.org, mpe@ellerman.id.au, paulus@samba.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	hpa@zytor.com, Will Deacon <will.deacon@arm.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	haren@linux.vnet.ibm.com, khandual@linux.vnet.ibm.com,
	npiggin@gmail.com, bsingharora@gmail.com,
	Tim Chen <tim.c.chen@linux.intel.com>,
	linuxppc-dev@lists.ozlabs.org, x86@kernel.org
Subject: Re: [PATCH 05/16] mm: Protect VMA modifications using VMA sequence count
Date: Thu, 10 Aug 2017 10:27:50 +0200	[thread overview]
Message-ID: <4e552377-af38-3580-73b6-1edf685cb90d@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170810005828.qmw3p7d676hjwkss@node.shutemov.name>

On 10/08/2017 02:58, Kirill A. Shutemov wrote:
> On Wed, Aug 09, 2017 at 12:43:33PM +0200, Laurent Dufour wrote:
>> On 09/08/2017 12:12, Kirill A. Shutemov wrote:
>>> On Tue, Aug 08, 2017 at 04:35:38PM +0200, Laurent Dufour wrote:
>>>> The VMA sequence count has been introduced to allow fast detection of
>>>> VMA modification when running a page fault handler without holding
>>>> the mmap_sem.
>>>>
>>>> This patch provides protection agains the VMA modification done in :
>>>> 	- madvise()
>>>> 	- mremap()
>>>> 	- mpol_rebind_policy()
>>>> 	- vma_replace_policy()
>>>> 	- change_prot_numa()
>>>> 	- mlock(), munlock()
>>>> 	- mprotect()
>>>> 	- mmap_region()
>>>> 	- collapse_huge_page()
>>>
>>> I don't thinks it's anywhere near complete list of places where we touch
>>> vm_flags. What is your plan for the rest?
>>
>> The goal is only to protect places where change to the VMA is impacting the
>> page fault handling. If you think I missed one, please advise.
> 
> That's very fragile approach. We rely here too much on specific compiler behaviour.
> 
> Any write access to vm_flags can, in theory, be translated to several
> write accesses. For instance with setting vm_flags to 0 in the middle,
> which would result in sigfault on page fault to the vma.

Indeed, just setting vm_flags to 0 will not result in sigfault, the real
job is done when the pte are updated and the bits allowing access are
cleared. Access to the pte is controlled by the pte lock.
Page fault handler is triggered based on the pte bits, not the content of
vm_flags and the speculative page fault is checking for the vma again once
the pte lock is held. So there is no concurrency when dealing with the pte
bits.

Regarding the compiler behaviour, there are memory barriers and locking
which should prevent that.

Thanks,
Laurent.

  reply	other threads:[~2017-08-10  8:28 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-08 14:35 [PATCH 00/16] Speculative page faults Laurent Dufour
2017-08-08 14:35 ` [PATCH 01/16] mm: Dont assume page-table invariance during faults Laurent Dufour
2017-08-08 14:35 ` [PATCH 02/16] mm: Prepare for FAULT_FLAG_SPECULATIVE Laurent Dufour
2017-08-09 10:08   ` Kirill A. Shutemov
2017-08-09 10:54     ` Laurent Dufour
2017-08-08 14:35 ` [PATCH 03/16] mm: Introduce pte_spinlock " Laurent Dufour
2017-08-08 14:35 ` [PATCH 04/16] mm: VMA sequence count Laurent Dufour
2017-08-08 14:35 ` [PATCH 05/16] mm: Protect VMA modifications using " Laurent Dufour
2017-08-09 10:12   ` Kirill A. Shutemov
2017-08-09 10:43     ` Laurent Dufour
2017-08-10  0:58       ` Kirill A. Shutemov
2017-08-10  8:27         ` Laurent Dufour [this message]
2017-08-10 13:43           ` Kirill A. Shutemov
2017-08-10 18:16             ` Laurent Dufour
2017-08-08 14:35 ` [PATCH 06/16] mm: RCU free VMAs Laurent Dufour
2017-08-08 14:35 ` [PATCH 07/16] mm: Provide speculative fault infrastructure Laurent Dufour
2017-08-08 14:35 ` [PATCH 08/16] mm: Try spin lock in speculative path Laurent Dufour
2017-08-08 14:35 ` [PATCH 09/16] x86/mm: Add speculative pagefault handling Laurent Dufour
2017-08-08 14:35 ` [PATCH 10/16] powerpc/mm: Add speculative page fault Laurent Dufour
2017-08-08 14:35 ` [PATCH 11/16] mm: Introduce __page_add_new_anon_rmap() Laurent Dufour
2017-08-08 14:35 ` [PATCH 12/16] mm: Protect SPF handler against anon_vma changes Laurent Dufour
2017-08-08 14:35 ` [PATCH 13/16] perf: Add a speculative page fault sw events Laurent Dufour
2017-08-09 13:18   ` Michael Ellerman
2017-08-09 13:25     ` Laurent Dufour
2017-08-08 14:35 ` [PATCH 14/16] x86/mm: Add support for SPF events Laurent Dufour
2017-08-08 14:35 ` [PATCH 15/16] powerpc/mm: " Laurent Dufour
2017-08-08 14:35 ` [PATCH 16/16] perf tools: " Laurent Dufour
2017-08-09  1:43   ` Anshuman Khandual

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4e552377-af38-3580-73b6-1edf685cb90d@linux.vnet.ibm.com \
    --to=ldufour@linux.vnet.ibm.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=bsingharora@gmail.com \
    --cc=dave@stgolabs.net \
    --cc=haren@linux.vnet.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jack@suse.cz \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mhocko@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=paulus@samba.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=will.deacon@arm.com \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®