lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 12 Jan 2021 11:11:43 -0500 From: "Liam R. Howlett" <Liam.Howlett@...cle.com> To: maple-tree@...ts.infradead.org, linux-mm@...ck.org, linux-kernel@...r.kernel.org Cc: Andrew Morton <akpm@...gle.com>, Song Liu <songliubraving@...com>, Davidlohr Bueso <dave@...olabs.net>, "Paul E . McKenney" <paulmck@...nel.org>, Matthew Wilcox <willy@...radead.org>, Jerome Glisse <jglisse@...hat.com>, David Rientjes <rientjes@...gle.com>, Axel Rasmussen <axelrasmussen@...gle.com>, Suren Baghdasaryan <surenb@...gle.com>, Vlastimil Babka <vbabka@...e.cz>, Rik van Riel <riel@...riel.com>, Peter Zijlstra <peterz@...radead.org> Subject: [PATCH v2 13/70] mm/gup: Add mm_populate_vma() for use when the vma is known When a vma is known, avoid calling mm_populate to search for the vma to populate. Signed-off-by: Liam R. Howlett <Liam.Howlett@...cle.com> --- include/linux/mm.h | 4 ++++ mm/gup.c | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index dbb83118eba09..baaad07c43c99 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2587,8 +2587,12 @@ static inline void mm_populate(unsigned long addr, unsigned long len) /* Ignore errors */ (void) __mm_populate(addr, len, 1); } +extern void mm_populate_vma(struct vm_area_struct *vma, unsigned long start, + unsigned long end); #else static inline void mm_populate(unsigned long addr, unsigned long len) {} +void mm_populate_vma(struct vm_area_struct *vma, unsigned long start, + unsigned long end) {} #endif /* These take the mm semaphore themselves */ diff --git a/mm/gup.c b/mm/gup.c index 98eb8e6d2609c..b06e2a6d90187 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1431,6 +1431,26 @@ long populate_vma_page_range(struct vm_area_struct *vma, NULL, NULL, locked); } +/* + * mm_populate_vma() - Populate a single range in a single vma. + * @vma: The vma to populate. + * @start: The start address to populate + * @end: The end address to stop populating + * + * Note: Ignores errors. + */ +void mm_populate_vma(struct vm_area_struct *vma, unsigned long start, + unsigned long end) +{ + struct mm_struct *mm = current->mm; + int locked = 1; + + mmap_read_lock(mm); + populate_vma_page_range(vma, start, end, &locked); + if (locked) + mmap_read_unlock(mm); +} + /* * __mm_populate - populate and/or mlock pages within a range of address space. * -- 2.28.0
Powered by blists - more mailing lists