diff --git a/[refs] b/[refs] index d474f43494ab..438f64ebb9b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3c868823413d76bdd80c643603be8ab09dcb4d65 +refs/heads/master: 895bdc29956e5c9e9e101b2b1c2f0ed34130f945 diff --git a/trunk/arch/x86/mm/pageattr_32.c b/trunk/arch/x86/mm/pageattr_32.c index 5cb5c7101f41..66688a630839 100644 --- a/trunk/arch/x86/mm/pageattr_32.c +++ b/trunk/arch/x86/mm/pageattr_32.c @@ -172,7 +172,7 @@ static int __change_page_attr(struct page *page, pgprot_t prot) BUG_ON(PageCompound(kpte_page)); if (pgprot_val(prot) != pgprot_val(PAGE_KERNEL)) { - if (!pte_huge(*kpte)) { + if (level == 3) { set_pte_atomic(kpte, mk_pte(page, prot)); } else { struct page *split; @@ -190,7 +190,7 @@ static int __change_page_attr(struct page *page, pgprot_t prot) } page_private(kpte_page)++; } else { - if (!pte_huge(*kpte)) { + if (level == 3) { set_pte_atomic(kpte, mk_pte(page, PAGE_KERNEL)); BUG_ON(page_private(kpte_page) == 0); page_private(kpte_page)--; diff --git a/trunk/arch/x86/mm/pageattr_64.c b/trunk/arch/x86/mm/pageattr_64.c index 3ccdb1401e67..73dbbb4048e6 100644 --- a/trunk/arch/x86/mm/pageattr_64.c +++ b/trunk/arch/x86/mm/pageattr_64.c @@ -153,7 +153,7 @@ __change_page_attr(unsigned long address, unsigned long pfn, pgprot_t prot, BUG_ON(PageLRU(kpte_page)); BUG_ON(PageCompound(kpte_page)); if (pgprot_val(prot) != pgprot_val(ref_prot)) { - if (!pte_huge(*kpte)) { + if (level == 4) { set_pte(kpte, pfn_pte(pfn, prot)); } else { /* @@ -172,7 +172,7 @@ __change_page_attr(unsigned long address, unsigned long pfn, pgprot_t prot, } page_private(kpte_page)++; } else { - if (!pte_huge(*kpte)) { + if (level == 4) { set_pte(kpte, pfn_pte(pfn, ref_prot)); BUG_ON(page_private(kpte_page) == 0); page_private(kpte_page)--;