Messages in this thread | | | Date | Wed, 2 Sep 2015 18:59:22 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH v2] x86: fix small LDT allocation for Xen |
| |
* Jan Beulich <JBeulich@suse.com> wrote:
> >> @@ -95,7 +95,7 @@ static void free_ldt_struct(struct ldt_s > >> if (ldt->size * LDT_ENTRY_SIZE > PAGE_SIZE) > >> vfree(ldt->entries); > >> else > >> - kfree(ldt->entries); > >> + put_page(virt_to_page(ldt->entries)); > > > > FWIW, I'm not convinced this is or was correct. Using free_page looks > > a bit safer, and free_page does more than just put_page. > > Actually I agree. put_page() is meant to be paired with get_page(); > __get_free_pages() is just misleading (i.e. doesn't imply a get_page()) > and instead is to be paired with free_pages(). Will do a v3 then.
So put_page() is a page cache primitive and should not be used outside of it.
As it happens, it is safe to put_page() a regularly allocated page as well, but it's a little bit slower than doing a free_page().
Thanks,
Ingo
| |