On Thu, Aug 18, 2022 at 09:00:16PM +0800, Miaohe Lin wrote: > For reserved pages, HWPoison flag will be set without increasing the page > refcnt. So we shouldn't even try to unpoison these pages and thus decrease > the page refcnt unexpectly. Add a PageReserved() check to filter this case > out and remove the below unneeded zero page (zero page is reserved) check. > > Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> Looks good to me, thank you. Acked-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> > --- > mm/memory-failure.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index 5f9615a86296..c831c41bb092 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -2355,7 +2355,7 @@ int unpoison_memory(unsigned long pfn) > goto unlock_mutex; > } > > - if (PageSlab(page) || PageTable(page)) > + if (PageSlab(page) || PageTable(page) || PageReserved(page)) > goto unlock_mutex; > > ret = get_hwpoison_page(p, MF_UNPOISON); > @@ -2386,7 +2386,7 @@ int unpoison_memory(unsigned long pfn) > freeit = !!TestClearPageHWPoison(p); > > put_page(page); > - if (freeit && !(pfn == my_zero_pfn(0) && page_count(p) == 1)) { > + if (freeit) { > put_page(page); > ret = 0; > } > -- > 2.23.0