Re: [RFC] Missing compound_head() in memory-failure

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

 




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)
> 
> 




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux