diff options
Diffstat (limited to 'mm/pgtable-generic.c')
| -rw-r--r-- | mm/pgtable-generic.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c index cbb38545d9d6..a8b919925934 100644 --- a/mm/pgtable-generic.c +++ b/mm/pgtable-generic.c @@ -110,9 +110,10 @@ int pmdp_clear_flush_young(struct vm_area_struct *vma,  pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,  		       pte_t *ptep)  { +	struct mm_struct *mm = (vma)->vm_mm;  	pte_t pte; -	pte = ptep_get_and_clear((vma)->vm_mm, address, ptep); -	if (pte_accessible(pte)) +	pte = ptep_get_and_clear(mm, address, ptep); +	if (pte_accessible(mm, pte))  		flush_tlb_page(vma, address);  	return pte;  } @@ -191,6 +192,9 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)  void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,  		     pmd_t *pmdp)  { +	pmd_t entry = *pmdp; +	if (pmd_numa(entry)) +		entry = pmd_mknonnuma(entry);  	set_pmd_at(vma->vm_mm, address, pmdp, pmd_mknotpresent(*pmdp));  	flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);  }  | 
