Commit f361e246 authored by Naoya Horiguchi's avatar Naoya Horiguchi Committed by akpm

mm/hwpoison: put page in already hwpoisoned case with MF_COUNT_INCREASED

In already hwpoisoned case, memory_failure() is supposed to return with
releasing the page refcount taken for error handling.  But currently the
refcount is not released when called with MF_COUNT_INCREASED, which makes
page refcount inconsistent.  This should be rare and non-critical, but it
might be inconvenient in testing (unpoison doesn't work).

Link: https://lkml.kernel.org/r/20220408135323.1559401-3-naoya.horiguchi@linux.devSigned-off-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
Suggested-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
Reviewed-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
Cc: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Yang Shi <shy828301@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent f142e707
...@@ -1811,6 +1811,8 @@ int memory_failure(unsigned long pfn, int flags) ...@@ -1811,6 +1811,8 @@ int memory_failure(unsigned long pfn, int flags)
res = -EHWPOISON; res = -EHWPOISON;
if (flags & MF_ACTION_REQUIRED) if (flags & MF_ACTION_REQUIRED)
res = kill_accessing_process(current, pfn, flags); res = kill_accessing_process(current, pfn, flags);
if (flags & MF_COUNT_INCREASED)
put_page(p);
goto unlock_mutex; goto unlock_mutex;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment