kernel memory leak: freeing pagetables in vmfree_area_pages in vmalloc.c
I was talking about this leak 2 days back but my mail ot lost..
----
we have in vfree -->vmfree_area_pages (calling) free_area_pmd (calling) free_area_pte (calling) free_page.
The final free_page frees all the pages that are allocated to a memory region in vmalloc.
Now where are we freeing pages that are allocated to page table themselves. For simplicity we can assume 2 level page tables (pgd == pmd)
Regards
Amol
Quoted 9 lines · On Thu, 28 Jun 2001 [email protected] wrote:
I was talking about this leak 2 days back but my mail ot lost..
----
we have in vfree -->vmfree_area_pages(calling)free_area_pmd(calling)free_area_pte(calling)free_page.
The finalfree_pagefrees all the pages that are allocated to a memory region in vmalloc.
Now where are we freeing pages that are allocated to page table themselves. For simplicity we can assume 2 level page tables (pgd == pmd)
They're not freed, but I don't see that as a memory leak. The page tables stay there ready for the next time a vmalloc() needs to expand into them. Seems sensible to me: do you have an actual case where it wastes significant memory?
(I haven't thought it through, but I would not be surprised if there turned out to be awkward races if those page tables were freed when
emptied: the code's probably simpler and surer the way it is.)
Hugh