mm: assert the mmap_lock is held in __anon_vma_prepare()
Patch series "Improve anon_vma scalability for anon VMAs". We have a 3x throughput improvement reported by Intel's kernel test robot: https://lore.kernel.org/all/202404261055.c5e24608-oliver.sang@intel.com/ This is from delaying taking the mmap_lock for page faults until we actually need the mmap_lock in order to assign an anon_vma to the vma. It cleans up the page fault path a little by making the anon fault handler more similar to the file fault handler. This patch (of 4): Convert the comment into an assertion. Link: https://lkml.kernel.org/r/20240426144506.1290619-1-willy@infradead.org Link: https://lkml.kernel.org/r/20240426144506.1290619-2-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Suren Baghdasaryan <surenb@google.com> Reviewed-by: David Hildenbrand <david@redhat.com> Cc: Jann Horn <jannh@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
e0ffb29bc5
commit
3be5106059
@ -182,8 +182,6 @@ static void anon_vma_chain_link(struct vm_area_struct *vma,
|
||||
* for the new allocation. At the same time, we do not want
|
||||
* to do any locking for the common case of already having
|
||||
* an anon_vma.
|
||||
*
|
||||
* This must be called with the mmap_lock held for reading.
|
||||
*/
|
||||
int __anon_vma_prepare(struct vm_area_struct *vma)
|
||||
{
|
||||
@ -191,6 +189,7 @@ int __anon_vma_prepare(struct vm_area_struct *vma)
|
||||
struct anon_vma *anon_vma, *allocated;
|
||||
struct anon_vma_chain *avc;
|
||||
|
||||
mmap_assert_locked(mm);
|
||||
might_sleep();
|
||||
|
||||
avc = anon_vma_chain_alloc(GFP_KERNEL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user