Re: [PATCH] 4.1.28 Fix bad backport of 8f182270dfec "mm/swap.c: flush lru pvecs on compound page arrival"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]