Skip to contentSkip to conversation

kernel memory leak: freeing pagetables in vmfree_area_pages in vmalloc.c

DISCUSSION [email protected] 2 participants 2 messages Jun 28, 2001

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
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 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)

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