]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/hwpoison: put page in already hwpoisoned case with MF_COUNT_INCREASED
authorNaoya Horiguchi <naoya.horiguchi@nec.com>
Thu, 14 Apr 2022 06:07:11 +0000 (23:07 -0700)
committerakpm <akpm@linux-foundation.org>
Thu, 14 Apr 2022 06:07:11 +0000 (23:07 -0700)
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.dev
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Suggested-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Yang Shi <shy828301@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory-failure.c

index e6352be9aea62672c62b8ae8ce2227f2c15545dc..a085e4dd3dc35f49c2aa9ecc8984e99fe1bebb15 100644 (file)
@@ -1812,6 +1812,8 @@ try_again:
                res = -EHWPOISON;
                if (flags & MF_ACTION_REQUIRED)
                        res = kill_accessing_process(current, pfn, flags);
+               if (flags & MF_COUNT_INCREASED)
+                       put_page(p);
                goto unlock_mutex;
        }