Re: [PATCH v7 01/13] memory-failure: Fix hardware poison check in unpoison_memory() again

Matthew Wilcox <[email protected]>
Newsgroups org.kvack.linux-mm,org.kernel.vger.linux-fsdevel,org.kernel.vger.stable
Message-ID <[email protected]>
On Thu, Jul 30, 2026 at 04:45:19PM +0800, Miaohe Lin wrote:
> On 2026/7/29 9:43, Matthew Wilcox wrote:
> > The careful reader will observe that injecting two memory failures
> > into the same hugetlb causes ... problems.  That's true before and after
> 
> Could you elaborate on what problems this might cause? IIUC, second memory
> failure on the same hugetlb folio will make try_memory_failure_hugetlb() return
> -EHWPOISON without holding another refcnt. Raw error pages will be added to
> raw_hwp_page list. Then in unpoison_memory(), raw_hwp_page list will be cleaned
> and extra refcnt held by memory_failure will be released and PageHWPoison will be
> cleared. So it looks work to me. Or am I miss something?

Thanks for the explanation of what happens.  What's confusing to me is
that we can poison pfn A and pfn A xor 1, then unpoison pfn A and that
causes pfn A^1 to be unpoisoned too (if they're in a hugetlb folio).
That's an unexpected difference to me; I'd expect to be able to set/clear
their poison individually.

But it has been this way for many years, so I presume people are either
used to it, or don't notice.

> Reviewed-by: Miaohe Lin <[email protected]>

Thanks, added.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.