aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memory-failure.c
diff options
context:
space:
mode:
authorMiaohe Lin <linmiaohe@huawei.com>2022-08-18 21:00:12 +0800
committerAndrew Morton <akpm@linux-foundation.org>2022-09-11 20:25:57 -0700
commit6bbabd041dfd4823c752940286656d404621bf38 (patch)
tree8adb134e06bcc44817461a154f64abb5702dac93 /mm/memory-failure.c
parentf36a5543a74883c21a59b8082b403a13c7654769 (diff)
downloadlinux-6bbabd041dfd4823c752940286656d404621bf38.tar.gz
mm, hwpoison: fix page refcnt leaking in unpoison_memory()
When free_raw_hwp_pages() fails its work, the refcnt of the hugetlb page would have been incremented if ret > 0. Using put_page() to fix refcnt leaking in this case. Link: https://lkml.kernel.org/r/20220818130016.45313-3-linmiaohe@huawei.com Fixes: debb6b9c3fdd ("mm, hwpoison: make unpoison aware of raw error info in hwpoisoned hugepage") Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r--mm/memory-failure.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 3f98fa2ac6cf5..f391818c9eac9 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -2378,6 +2378,7 @@ int unpoison_memory(unsigned long pfn)
count = free_raw_hwp_pages(page, false);
if (count == 0) {
ret = -EBUSY;
+ put_page(page);
goto unlock_mutex;
}
}