Re: [PATCH v5 01/12] mm: support madvise(MADV_FREE)

From: Minchan Kim
Date: Mon Nov 30 2015 - 04:22:31 EST


On Mon, Nov 30, 2015 at 10:20:25AM +0200, Mika Penttilä wrote:
> > + * 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).

Even, I missed unlock_page.
Thanks for the review!