Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/mm/huge_memory.c b/mm/huge_memory.c
- index f0cd9db..8af703d 100644
- --- a/mm/huge_memory.c
- +++ b/mm/huge_memory.c
- @@ -2404,8 +2404,9 @@ static void __collapse_huge_page_swapin(struct mm_struct *mm,
- continue;
- swapped_in++;
- ret = do_swap_page(mm, vma, _address, pte, pmd,
- - FAULT_FLAG_ALLOW_RETRY|FAULT_FLAG_RETRY_NOWAIT,
- + FAULT_FLAG_ALLOW_RETRY,
- pteval);
- + down_read(&mm->mmap_sem);
- if (ret & VM_FAULT_ERROR) {
- trace_mm_collapse_huge_page_swapin(mm, swapped_in, 0);
- return;
- @@ -2491,8 +2492,13 @@ static void collapse_huge_page(struct mm_struct *mm,
- * Don't perform swapin readahead when the system is under pressure,
- * to avoid unnecessary resource consumption.
- */
- - if (allocstall == curr_allocstall && swap != 0)
- + if (allocstall == curr_allocstall && swap != 0) {
- + up_write(&mm->mmap_sem);
- + down_read(&mm->mmap_sem);
- __collapse_huge_page_swapin(mm, vma, address, pmd);
- + up_read(&mm->mmap_sem);
- + down_write(&mm->mmap_sem);
- + }
- anon_vma_lock_write(vma->anon_vma);
Advertisement
Add Comment
Please, Sign In to add comment