How to free a page table page

linux lover caprianking2002 at
Mon Apr 5 18:12:11 EDT 2021

I really appreciate it!

Sent from my iPhone

> On Apr 5, 2021, at 11:39 PM, Wonkyo Choe <heysid3 at> wrote:
> Hello there,
> I'm trying to manage a custom page table list for my toy project.
> A basic process of the custom list is to allocate few pages (struct page)
> to the list from the buddy allocator and the list will give some pages
> when a user process needs page table pages. In contrast, when this
> process terminates,
> page table pages will return to the list. Finally, when the list is
> not needed, all pages will be
> delivered to the buddy allocator.
> This relationship can be described as:
>    process - custom list - buddy allocator
> My problem is that a user process' page table pages (pud, pmd, pte)
> seem to free their
> page to the buddy allocator instead of to the custom list. (allocation
> works. I've checked it)
> I put my custom functions in release_pages / free_unref_page /
> free_unref_page_list,
> but somehow the functions do not work as I intended. (Actually the
> functions are not
> called so I may choose the wrong functions.)
> So, I was wondering whether I intercepted the right functions (three
> functions above).
> Also, I have a question about freeing a page-table page.
> 1. In x86, are all page-table pages released at the end of termination
> by using free_pgtables()?
> 2. In x86, a page-table page can be freed when there is no entry? In
> other words, does the Linux kernel
> release a page-table page on runtime? If so, what function would do
> this kind of task?
> I'm trying to find freeing functions, but I can't find them and I'm
> not sure when this kind of function is called.
> (I'm pretty sure that pte_free / pmd_free / pud_free functions are not
> for this case.)
> Any help would be greatly appreciated.
> Regards,
> Wonkyo
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at

More information about the Kernelnewbies mailing list