diff options
-rw-r--r-- | mm/hugetlb.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 7c02b9dadfb0..6cddfadaba03 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -2690,7 +2690,8 @@ retry_avoidcopy: | |||
2690 | BUG_ON(huge_pte_none(pte)); | 2690 | BUG_ON(huge_pte_none(pte)); |
2691 | spin_lock(ptl); | 2691 | spin_lock(ptl); |
2692 | ptep = huge_pte_offset(mm, address & huge_page_mask(h)); | 2692 | ptep = huge_pte_offset(mm, address & huge_page_mask(h)); |
2693 | if (likely(pte_same(huge_ptep_get(ptep), pte))) | 2693 | if (likely(ptep && |
2694 | pte_same(huge_ptep_get(ptep), pte))) | ||
2694 | goto retry_avoidcopy; | 2695 | goto retry_avoidcopy; |
2695 | /* | 2696 | /* |
2696 | * race occurs while re-acquiring page table | 2697 | * race occurs while re-acquiring page table |
@@ -2734,7 +2735,7 @@ retry_avoidcopy: | |||
2734 | */ | 2735 | */ |
2735 | spin_lock(ptl); | 2736 | spin_lock(ptl); |
2736 | ptep = huge_pte_offset(mm, address & huge_page_mask(h)); | 2737 | ptep = huge_pte_offset(mm, address & huge_page_mask(h)); |
2737 | if (likely(pte_same(huge_ptep_get(ptep), pte))) { | 2738 | if (likely(ptep && pte_same(huge_ptep_get(ptep), pte))) { |
2738 | ClearPagePrivate(new_page); | 2739 | ClearPagePrivate(new_page); |
2739 | 2740 | ||
2740 | /* Break COW */ | 2741 | /* Break COW */ |