aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/khugepaged.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 93d5f87c00d5..566148489e33 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -891,9 +891,10 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm,
891 /* do_swap_page returns VM_FAULT_RETRY with released mmap_sem */ 891 /* do_swap_page returns VM_FAULT_RETRY with released mmap_sem */
892 if (ret & VM_FAULT_RETRY) { 892 if (ret & VM_FAULT_RETRY) {
893 down_read(&mm->mmap_sem); 893 down_read(&mm->mmap_sem);
894 /* vma is no longer available, don't continue to swapin */ 894 if (hugepage_vma_revalidate(mm, address)) {
895 if (hugepage_vma_revalidate(mm, address)) 895 /* vma is no longer available, don't continue to swapin */
896 return false; 896 return false;
897 }
897 /* check if the pmd is still valid */ 898 /* check if the pmd is still valid */
898 if (mm_find_pmd(mm, address) != pmd) 899 if (mm_find_pmd(mm, address) != pmd)
899 return false; 900 return false;
@@ -969,7 +970,7 @@ static void collapse_huge_page(struct mm_struct *mm,
969 970
970 /* 971 /*
971 * __collapse_huge_page_swapin always returns with mmap_sem locked. 972 * __collapse_huge_page_swapin always returns with mmap_sem locked.
972 * If it fails, release mmap_sem and jump directly out. 973 * If it fails, we release mmap_sem and jump out_nolock.
973 * Continuing to collapse causes inconsistency. 974 * Continuing to collapse causes inconsistency.
974 */ 975 */
975 if (!__collapse_huge_page_swapin(mm, vma, address, pmd)) { 976 if (!__collapse_huge_page_swapin(mm, vma, address, pmd)) {