@@ -62,6 +62,9 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
unsigned long addr)
{
+ struct page *page = virt_to_page(pmdp);
+
+ pgtable_page_dtor(page);
tlb_remove_table(tlb, virt_to_page(pmdp));
}
#endif
@@ -70,6 +73,9 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pudp,
unsigned long addr)
{
+ struct page *page = virt_to_page(pudp);
+
+ pgtable_page_dtor(page);
tlb_remove_table(tlb, virt_to_page(pudp));
}
#endif