diff options
author | Naoya Horiguchi <[email protected]> | 2022-04-28 23:16:02 -0700 |
---|---|---|
committer | akpm <[email protected]> | 2022-04-28 23:16:02 -0700 |
commit | f361e2462e8cccdd9231aa3274690705a2ea35a2 (patch) | |
tree | 14a444f401c65181d68017ab1aa965436e6360ad | |
parent | f142e70750a1ea36ba60fb4f24bc37713e921f73 (diff) |
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/[email protected]
Signed-off-by: Naoya Horiguchi <[email protected]>
Suggested-by: Miaohe Lin <[email protected]>
Reviewed-by: Miaohe Lin <[email protected]>
Reviewed-by: Mike Kravetz <[email protected]>
Cc: Dan Carpenter <[email protected]>
Cc: Yang Shi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
-rw-r--r-- | mm/memory-failure.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 837348a2d669..44510efd0829 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1811,6 +1811,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; } |