On 1/31/22 20:29, Matthew Wilcox wrote: > Unless I am mistaken, you have to pass the compound head of the page > which has the error to collect_procs(). Am I mistaken? > -rc2 already has a fix for it: https://lore.kernel.org/linux-mm/20220129021420.PgBIZm-q9%25akpm@xxxxxxxxxxxxxxxxxxxx/ Earlier in that function there's a: page = compound_head(page); So the @page passed to collect_procs() already is a head page. filesystem-dax, though, it's always base pages. So there's no heads. > (found by code inspection as part of the folio work; I think > collect_procs() needs to take a folio, which would eliminate this class > of errors) > > +++ b/mm/memory-failure.c > @@ -1633,7 +1633,7 @@ static int memory_failure_dev_pagemap(unsigned long pfn, int flags, > * SIGBUS (i.e. MF_MUST_KILL) > */ > flags |= MF_ACTION_REQUIRED | MF_MUST_KILL; > - collect_procs(page, &tokill, flags & MF_ACTION_REQUIRED); > + collect_procs(compound_head(page), &tokill, flags & MF_ACTION_REQUIRED); > > list_for_each_entry(tk, &tokill, nd) > if (tk->size_shift) > >