diff options
author | Andrea Arcangeli <aarcange@redhat.com> | 2011-01-13 18:46:53 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-13 20:32:42 -0500 |
commit | 05759d380a9d7f131a475186c07fce58ceaa8902 (patch) | |
tree | 6c253f15176c89f6f8dfd80b1471bcf3e0a3e44e /mm/rmap.c | |
parent | 8a07651ee8cdaa9e27cb4ae372aed347533770f5 (diff) |
thp: split_huge_page anon_vma ordering dependency
This documents how split_huge_page is safe vs new vma inserctions into the
anon_vma that may have already released the anon_vma->lock but not
established pmds yet when split_huge_page starts.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/rmap.c')
-rw-r--r-- | mm/rmap.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -177,6 +177,10 @@ static void anon_vma_chain_link(struct vm_area_struct *vma, | |||
177 | list_add(&avc->same_vma, &vma->anon_vma_chain); | 177 | list_add(&avc->same_vma, &vma->anon_vma_chain); |
178 | 178 | ||
179 | anon_vma_lock(anon_vma); | 179 | anon_vma_lock(anon_vma); |
180 | /* | ||
181 | * It's critical to add new vmas to the tail of the anon_vma, | ||
182 | * see comment in huge_memory.c:__split_huge_page(). | ||
183 | */ | ||
180 | list_add_tail(&avc->same_anon_vma, &anon_vma->head); | 184 | list_add_tail(&avc->same_anon_vma, &anon_vma->head); |
181 | anon_vma_unlock(anon_vma); | 185 | anon_vma_unlock(anon_vma); |
182 | } | 186 | } |