Re: [PATCH v5 01/12] mm: support madvise(MADV_FREE)
From: Mika Penttilä <hidden>
Date: 2015-11-30 08:20:35
Also in:
linux-mm, lkml
From: Mika Penttilä <hidden>
Date: 2015-11-30 08:20:35
Also in:
linux-mm, lkml
+ * If pmd isn't transhuge but the page is THP and
+ * is owned by only this process, split it and
+ * deactivate all pages.
+ */
+ if (PageTransCompound(page)) {
+ if (page_mapcount(page) != 1)
+ goto out;
+ get_page(page);
+ if (!trylock_page(page)) {
+ put_page(page);
+ goto out;
+ }
+ pte_unmap_unlock(orig_pte, ptl);
+ if (split_huge_page(page)) {
+ unlock_page(page);
+ put_page(page);
+ pte_offset_map_lock(mm, pmd, addr, &ptl);
+ goto out;
+ }
+ pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+ pte--;
+ addr -= PAGE_SIZE;
+ continue;
+ }looks like this leaks page count if split_huge_page() is succesfull (returns zero). --Mika