On Fri 24-11-17 10:17:58, Jiri Slaby wrote: > On 11/22/2017, 01:09 PM, Michal Hocko wrote: > > --- a/mm/debug-pagealloc.c > > +++ b/mm/debug-pagealloc.c > > @@ -34,6 +34,8 @@ static inline void set_page_poison(struct page *page) > > struct page_ext *page_ext; > > > > page_ext = lookup_page_ext(page); > > + if (page_ext) > > + return; > > __set_bit(PAGE_EXT_DEBUG_POISON, &page_ext->flags); > > } > > > > @@ -42,6 +44,8 @@ static inline void clear_page_poison(struct page *page) > > struct page_ext *page_ext; > > > > page_ext = lookup_page_ext(page); > > + if (page_ext) > > + return; > > __clear_bit(PAGE_EXT_DEBUG_POISON, &page_ext->flags); > > } > > > > @@ -50,6 +54,8 @@ static inline bool page_poison(struct page *page) > > struct page_ext *page_ext; > > > > page_ext = lookup_page_ext(page); > > + if (page_ext) > > + return false; > > return test_bit(PAGE_EXT_DEBUG_POISON, &page_ext->flags); > > Now I am confused, your SLE12-SP2's backport in > patches.fixes/0001-mm-check-the-return-value-of-lookup_page_ext-for-all.patch > does the opposite in all three: > + if (!page_ext) > + return; Dohh, because I screwed up! Thanks for catching this. I will repost the fixed patch as a reply to this email. -- Michal Hocko SUSE Labs