Re: [PATCH] mm, page_alloc: prevent infinite loop in buffered_rmqueue()

From: Mel Gorman
Date: Mon May 30 2016 - 06:57:52 EST


On Mon, May 30, 2016 at 11:46:05AM +0200, Vlastimil Babka wrote:
> On 05/30/2016 11:01 AM, Mel Gorman wrote:
> >From: Vlastimil Babka <vbabka@xxxxxxx>
> >
> >In DEBUG_VM kernel, we can hit infinite loop for order == 0 in
> >buffered_rmqueue() when check_new_pcp() returns 1, because the bad page is
> >never removed from the pcp list. Fix this by removing the page before retrying.
> >Also we don't need to check if page is non-NULL, because we simply grab it from
> >the list which was just tested for being non-empty.
> >
> >Fixes: http://www.ozlabs.org/~akpm/mmotm/broken-out/mm-page_alloc-defer-debugging-checks-of-freed-pages-until-a-pcp-drain.patch
>
> That was a wrong one, which I corrected later. Also it's no longer mmotm.
> Correction below:
>
> Fixes: 479f854a207c ("mm, page_alloc: defer debugging checks of pages
> allocated from the PCP")
>

Yes sorry, I meant to clean it up but had just re-read the patch itself,
confirmed it was missing and was still required.

--
Mel Gorman
SUSE Labs