Re: [PATCH] mm, hugetlb: correct missing private flag clearing

From: Joonsoo Kim
Date: Mon Sep 30 2013 - 21:15:43 EST


On Mon, Sep 30, 2013 at 02:35:14PM -0700, Andrew Morton wrote:
> On Mon, 30 Sep 2013 16:59:44 +0900 Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> wrote:
>
> > We should clear the page's private flag when returing the page to
> > the page allocator or the hugepage pool. This patch fixes it.
> >
> > Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>
> > ---
> > Hello, Andrew.
> >
> > I sent the new version of commit ('07443a8') before you did pull request,
> > but it isn't included. It may be losted :)
> > So I send this fix. IMO, this is good for v3.12.
> >
> > Thanks.
> >
> > diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> > index b49579c..691f226 100644
> > --- a/mm/hugetlb.c
> > +++ b/mm/hugetlb.c
> > @@ -653,6 +653,7 @@ static void free_huge_page(struct page *page)
> > BUG_ON(page_count(page));
> > BUG_ON(page_mapcount(page));
> > restore_reserve = PagePrivate(page);
> > + ClearPagePrivate(page);
> >
>
> You describe it as a fix, but what does it fix? IOW, what are the
> user-visible effects of the change?
>
> update_and_free_page() already clears PG_private, but afaict the bit
> remains unaltered if free_huge_page() takes the enqueue_huge_page()
> route.

Yes, you are right.
I attach another version having more explanation.
Please refer this and merge it.

Thanks.
------------------------->8---------------------------------