On Thu, Nov 04, 2021 at 02:07:51PM -0700, Yang Shi wrote: > commit c7cb42e94473aafe553c0f2a3d8ca904599399ed upstream. > > When handling THP hwpoison checked if the THP is in allocation or free > stage since hwpoison may mistreat it as hugetlb page. After commit > 415c64c1453a ("mm/memory-failure: split thp earlier in memory error > handling") the problem has been fixed, so this check is no longer > needed. Remove it. The side effect of the removal is hwpoison may > report unsplit THP instead of unknown error for shmem THP. It seems not > like a big deal. > > The following patch "mm: filemap: check if THP has hwpoisoned subpage > for PMD page fault" depends on this, which fixes shmem THP with > hwpoisoned subpage(s) are mapped PMD wrongly. So this patch needs to be > backported to -stable as well. > > Link: https://lkml.kernel.org/r/20211020210755.23964-2-shy828301@xxxxxxxxx > Signed-off-by: Yang Shi <shy828301@xxxxxxxxx> > Suggested-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> > Acked-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> > Cc: Hugh Dickins <hughd@xxxxxxxxxx> > Cc: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Cc: Oscar Salvador <osalvador@xxxxxxx> > Cc: Peter Xu <peterx@xxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > --- > mm/memory-failure.c | 14 -------------- > 1 file changed, 14 deletions(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index 01445ddff58d..bd2cd4dd59b6 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -956,20 +956,6 @@ static int get_hwpoison_page(struct page *page) > { > struct page *head = compound_head(page); > > - if (!PageHuge(head) && PageTransHuge(head)) { > - /* > - * Non anonymous thp exists only in allocation/free time. We > - * can't handle such a case correctly, so let's give it up. > - * This should be better than triggering BUG_ON when kernel > - * tries to touch the "partially handled" page. > - */ > - if (!PageAnon(head)) { > - pr_err("Memory failure: %#lx: non anonymous thp\n", > - page_to_pfn(page)); > - return 0; > - } > - } > - > if (get_page_unless_zero(head)) { > if (head == compound_head(page)) > return 1; > -- > 2.26.2 > Thanks, both now queued up. greg k-h