From b03e630c1e549a73675eb8b4f29ce97514b5b46c Mon Sep 17 00:00:00 2001 From: Doug Doan Date: Mon, 9 Aug 2010 17:18:30 -0700 Subject: [PATCH] --- yaml --- r: 207194 b: refs/heads/master c: 3edd4fc9537d95e460d502987c63a90d6b9a7a82 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/hugetlb.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 47922fdcfe39..509a65428fcd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a1b200e27c0426ea98c1231a2b78c6094eb073e4 +refs/heads/master: 3edd4fc9537d95e460d502987c63a90d6b9a7a82 diff --git a/trunk/mm/hugetlb.c b/trunk/mm/hugetlb.c index 54d42b009dbe..b61d2db9f34e 100644 --- a/trunk/mm/hugetlb.c +++ b/trunk/mm/hugetlb.c @@ -2349,11 +2349,17 @@ static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma, ptep = huge_pte_offset(mm, address & huge_page_mask(h)); if (likely(pte_same(huge_ptep_get(ptep), pte))) { /* Break COW */ + mmu_notifier_invalidate_range_start(mm, + address & huge_page_mask(h), + (address & huge_page_mask(h)) + huge_page_size(h)); huge_ptep_clear_flush(vma, address, ptep); set_huge_pte_at(mm, address, ptep, make_huge_pte(vma, new_page, 1)); /* Make the old page be freed below */ new_page = old_page; + mmu_notifier_invalidate_range_end(mm, + address & huge_page_mask(h), + (address & huge_page_mask(h)) + huge_page_size(h)); } page_cache_release(new_page); page_cache_release(old_page);