On 07/15/2016 02:55 AM, Michal Hocko wrote: > On Thu 14-07-16 17:55:21, Steven Rostedt wrote: >> > When I pulled in 4.1.28 into my stable 4.1-rt tree and ran the tests, >> > it crashed with a severe OOM killing everything. I then tested 4.1.28 >> > without -rt and it had the same issue. I did a bisect between 4.1.27 >> > and 4.1.28 and found that the bug started at: >> > >> > commit 8f182270dfec "mm/swap.c: flush lru pvecs on compound page >> > arrival" >> > >> > Looking at that patch and what's in mainline, I see that there's a >> > mismatch in one of the hunks: >> > >> > Mainline: >> > >> > @@ -391,9 +391,8 @@ static void __lru_cache_add(struct page *page) >> > struct pagevec *pvec = &get_cpu_var(lru_add_pvec); >> > >> > get_page(page); >> > - if (!pagevec_space(pvec)) >> > + if (!pagevec_add(pvec, page) || PageCompound(page)) >> > __pagevec_lru_add(pvec); >> > - pagevec_add(pvec, page); >> > put_cpu_var(lru_add_pvec); >> > } >> > >> > >> > Stable 4.1.28: >> > >> > @@ -631,9 +631,8 @@ static void __lru_cache_add(struct page *page) >> > struct pagevec *pvec = &get_cpu_var(lru_add_pvec); >> > >> > page_cache_get(page); >> > - if (!pagevec_space(pvec)) >> > + if (!pagevec_space(pvec) || PageCompound(page)) >> > __pagevec_lru_add(pvec); >> > - pagevec_add(pvec, page); >> > put_cpu_var(lru_add_pvec); >> > } > Heh, I've made the same mistake when backporting this to our older SLES > based kernel initially. I was lucky the system even didn't boot. Sorry > that I didn't find time to review the stable backport. > Thanks all! I've queued the fix. Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html