2015-08-10 11:56:27

by Wanpeng Li

[permalink] [raw]
Subject: [PATCH v2 4/5] mm/hwpoison: fix refcount of THP head page in no-injection case

Hwpoison injection takes a refcount of target page and another refcount
of head page of THP if the target page is the tail page of a THP. However,
current code doesn't release the refcount of head page if the THP is not
supported to be injected wrt hwpoison filter.

Fix it by reducing the refcount of head page if the target page is the tail
page of a THP and it is not supported to be injected.

Signed-off-by: Wanpeng Li <[email protected]>
---
mm/hwpoison-inject.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/mm/hwpoison-inject.c b/mm/hwpoison-inject.c
index 5015679..9d26fd9 100644
--- a/mm/hwpoison-inject.c
+++ b/mm/hwpoison-inject.c
@@ -55,7 +55,7 @@ inject:
pr_info("Injecting memory failure at pfn %#lx\n", pfn);
return memory_failure(pfn, 18, MF_COUNT_INCREASED);
put_out:
- put_page(p);
+ put_hwpoison_page(p);
return 0;
}

--
1.7.1


2015-08-12 08:59:44

by Naoya Horiguchi

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] mm/hwpoison: fix refcount of THP head page in no-injection case

On Mon, Aug 10, 2015 at 07:28:22PM +0800, Wanpeng Li wrote:
> Hwpoison injection takes a refcount of target page and another refcount
> of head page of THP if the target page is the tail page of a THP. However,
> current code doesn't release the refcount of head page if the THP is not
> supported to be injected wrt hwpoison filter.
>
> Fix it by reducing the refcount of head page if the target page is the tail
> page of a THP and it is not supported to be injected.
>
> Signed-off-by: Wanpeng Li <[email protected]>

Acked-by: Naoya Horiguchi <[email protected]>

> ---
> mm/hwpoison-inject.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/mm/hwpoison-inject.c b/mm/hwpoison-inject.c
> index 5015679..9d26fd9 100644
> --- a/mm/hwpoison-inject.c
> +++ b/mm/hwpoison-inject.c
> @@ -55,7 +55,7 @@ inject:
> pr_info("Injecting memory failure at pfn %#lx\n", pfn);
> return memory_failure(pfn, 18, MF_COUNT_INCREASED);
> put_out:
> - put_page(p);
> + put_hwpoison_page(p);
> return 0;
> }
>
> --
> 1.7.1
> -