* [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case
@ 2015-04-17 2:08 ` Naoya Horiguchi
0 siblings, 0 replies; 8+ messages in thread
From: Naoya Horiguchi @ 2015-04-17 2:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Dean Nelson, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
Hwpoison injection via debugfs:hwpoison/corrupt-pfn takes a refcount of
the target page. But current code doesn't release it if the target page
is not supposed to be injected, which results in memory leak.
This patch simply adds the refcount releasing code.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
mm/hwpoison-inject.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
index 329caf56df22..2b3f933e3282 100644
--- v4.0.orig/mm/hwpoison-inject.c
+++ v4.0/mm/hwpoison-inject.c
@@ -40,7 +40,7 @@ static int hwpoison_inject(void *data, u64 val)
* This implies unable to support non-LRU pages.
*/
if (!PageLRU(p) && !PageHuge(p))
- return 0;
+ goto put_out;
/*
* do a racy check with elevated page count, to make sure PG_hwpoison
@@ -52,11 +52,14 @@ static int hwpoison_inject(void *data, u64 val)
err = hwpoison_filter(hpage);
unlock_page(hpage);
if (err)
- return 0;
+ goto put_out;
inject:
pr_info("Injecting memory failure at pfn %#lx\n", pfn);
return memory_failure(pfn, 18, MF_COUNT_INCREASED);
+put_out:
+ put_page(hpage);
+ return 0;
}
static int hwpoison_unpoison(void *data, u64 val)
--
2.1.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] mm/hwpoison-inject: check PageLRU of hpage
2015-04-17 2:08 ` Naoya Horiguchi
@ 2015-04-17 2:08 ` Naoya Horiguchi
-1 siblings, 0 replies; 8+ messages in thread
From: Naoya Horiguchi @ 2015-04-17 2:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Dean Nelson, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
Hwpoison injector checks PageLRU of the raw target page to find out whether
the page is an appropriate target, but current code now filters out thp tail
pages, which prevents us from testing for such cases via this interface.
So let's check hpage instead of p.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
mm/hwpoison-inject.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
index 2b3f933e3282..4ca5fe0042e1 100644
--- v4.0.orig/mm/hwpoison-inject.c
+++ v4.0/mm/hwpoison-inject.c
@@ -34,12 +34,12 @@ static int hwpoison_inject(void *data, u64 val)
if (!hwpoison_filter_enable)
goto inject;
- if (!PageLRU(p) && !PageHuge(p))
- shake_page(p, 0);
+ if (!PageLRU(hpage) && !PageHuge(p))
+ shake_page(hpage, 0);
/*
* This implies unable to support non-LRU pages.
*/
- if (!PageLRU(p) && !PageHuge(p))
+ if (!PageLRU(hpage) && !PageHuge(p))
goto put_out;
/*
--
2.1.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case
@ 2015-04-17 2:08 ` Naoya Horiguchi
0 siblings, 0 replies; 8+ messages in thread
From: Naoya Horiguchi @ 2015-04-17 2:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Dean Nelson, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
Hwpoison injection via debugfs:hwpoison/corrupt-pfn takes a refcount of
the target page. But current code doesn't release it if the target page
is not supposed to be injected, which results in memory leak.
This patch simply adds the refcount releasing code.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
mm/hwpoison-inject.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
index 329caf56df22..2b3f933e3282 100644
--- v4.0.orig/mm/hwpoison-inject.c
+++ v4.0/mm/hwpoison-inject.c
@@ -40,7 +40,7 @@ static int hwpoison_inject(void *data, u64 val)
* This implies unable to support non-LRU pages.
*/
if (!PageLRU(p) && !PageHuge(p))
- return 0;
+ goto put_out;
/*
* do a racy check with elevated page count, to make sure PG_hwpoison
@@ -52,11 +52,14 @@ static int hwpoison_inject(void *data, u64 val)
err = hwpoison_filter(hpage);
unlock_page(hpage);
if (err)
- return 0;
+ goto put_out;
inject:
pr_info("Injecting memory failure at pfn %#lx\n", pfn);
return memory_failure(pfn, 18, MF_COUNT_INCREASED);
+put_out:
+ put_page(hpage);
+ return 0;
}
static int hwpoison_unpoison(void *data, u64 val)
--
2.1.0
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] mm/hwpoison-inject: check PageLRU of hpage
@ 2015-04-17 2:08 ` Naoya Horiguchi
0 siblings, 0 replies; 8+ messages in thread
From: Naoya Horiguchi @ 2015-04-17 2:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Dean Nelson, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
Hwpoison injector checks PageLRU of the raw target page to find out whether
the page is an appropriate target, but current code now filters out thp tail
pages, which prevents us from testing for such cases via this interface.
So let's check hpage instead of p.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
mm/hwpoison-inject.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
index 2b3f933e3282..4ca5fe0042e1 100644
--- v4.0.orig/mm/hwpoison-inject.c
+++ v4.0/mm/hwpoison-inject.c
@@ -34,12 +34,12 @@ static int hwpoison_inject(void *data, u64 val)
if (!hwpoison_filter_enable)
goto inject;
- if (!PageLRU(p) && !PageHuge(p))
- shake_page(p, 0);
+ if (!PageLRU(hpage) && !PageHuge(p))
+ shake_page(hpage, 0);
/*
* This implies unable to support non-LRU pages.
*/
- if (!PageLRU(p) && !PageHuge(p))
+ if (!PageLRU(hpage) && !PageHuge(p))
goto put_out;
/*
--
2.1.0
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case
2015-04-17 2:08 ` Naoya Horiguchi
@ 2015-04-24 0:42 ` Dean Nelson
-1 siblings, 0 replies; 8+ messages in thread
From: Dean Nelson @ 2015-04-24 0:42 UTC (permalink / raw)
To: Naoya Horiguchi
Cc: Andrew Morton, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
On 04/16/2015 09:08 PM, Naoya Horiguchi wrote:
> Hwpoison injection via debugfs:hwpoison/corrupt-pfn takes a refcount of
> the target page. But current code doesn't release it if the target page
> is not supposed to be injected, which results in memory leak.
> This patch simply adds the refcount releasing code.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Dean Nelson <dnelson@redhat.com>
> ---
> mm/hwpoison-inject.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
> index 329caf56df22..2b3f933e3282 100644
> --- v4.0.orig/mm/hwpoison-inject.c
> +++ v4.0/mm/hwpoison-inject.c
> @@ -40,7 +40,7 @@ static int hwpoison_inject(void *data, u64 val)
> * This implies unable to support non-LRU pages.
> */
> if (!PageLRU(p) && !PageHuge(p))
> - return 0;
> + goto put_out;
>
> /*
> * do a racy check with elevated page count, to make sure PG_hwpoison
> @@ -52,11 +52,14 @@ static int hwpoison_inject(void *data, u64 val)
> err = hwpoison_filter(hpage);
> unlock_page(hpage);
> if (err)
> - return 0;
> + goto put_out;
>
> inject:
> pr_info("Injecting memory failure at pfn %#lx\n", pfn);
> return memory_failure(pfn, 18, MF_COUNT_INCREASED);
> +put_out:
> + put_page(hpage);
> + return 0;
> }
>
> static int hwpoison_unpoison(void *data, u64 val)
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case
@ 2015-04-24 0:42 ` Dean Nelson
0 siblings, 0 replies; 8+ messages in thread
From: Dean Nelson @ 2015-04-24 0:42 UTC (permalink / raw)
To: Naoya Horiguchi
Cc: Andrew Morton, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
On 04/16/2015 09:08 PM, Naoya Horiguchi wrote:
> Hwpoison injection via debugfs:hwpoison/corrupt-pfn takes a refcount of
> the target page. But current code doesn't release it if the target page
> is not supposed to be injected, which results in memory leak.
> This patch simply adds the refcount releasing code.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Dean Nelson <dnelson@redhat.com>
> ---
> mm/hwpoison-inject.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
> index 329caf56df22..2b3f933e3282 100644
> --- v4.0.orig/mm/hwpoison-inject.c
> +++ v4.0/mm/hwpoison-inject.c
> @@ -40,7 +40,7 @@ static int hwpoison_inject(void *data, u64 val)
> * This implies unable to support non-LRU pages.
> */
> if (!PageLRU(p) && !PageHuge(p))
> - return 0;
> + goto put_out;
>
> /*
> * do a racy check with elevated page count, to make sure PG_hwpoison
> @@ -52,11 +52,14 @@ static int hwpoison_inject(void *data, u64 val)
> err = hwpoison_filter(hpage);
> unlock_page(hpage);
> if (err)
> - return 0;
> + goto put_out;
>
> inject:
> pr_info("Injecting memory failure at pfn %#lx\n", pfn);
> return memory_failure(pfn, 18, MF_COUNT_INCREASED);
> +put_out:
> + put_page(hpage);
> + return 0;
> }
>
> static int hwpoison_unpoison(void *data, u64 val)
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mm/hwpoison-inject: check PageLRU of hpage
2015-04-17 2:08 ` Naoya Horiguchi
@ 2015-04-24 0:42 ` Dean Nelson
-1 siblings, 0 replies; 8+ messages in thread
From: Dean Nelson @ 2015-04-24 0:42 UTC (permalink / raw)
To: Naoya Horiguchi
Cc: Andrew Morton, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
On 04/16/2015 09:08 PM, Naoya Horiguchi wrote:
> Hwpoison injector checks PageLRU of the raw target page to find out whether
> the page is an appropriate target, but current code now filters out thp tail
> pages, which prevents us from testing for such cases via this interface.
> So let's check hpage instead of p.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Dean Nelson <dnelson@redhat.com>
> ---
> mm/hwpoison-inject.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
> index 2b3f933e3282..4ca5fe0042e1 100644
> --- v4.0.orig/mm/hwpoison-inject.c
> +++ v4.0/mm/hwpoison-inject.c
> @@ -34,12 +34,12 @@ static int hwpoison_inject(void *data, u64 val)
> if (!hwpoison_filter_enable)
> goto inject;
>
> - if (!PageLRU(p) && !PageHuge(p))
> - shake_page(p, 0);
> + if (!PageLRU(hpage) && !PageHuge(p))
> + shake_page(hpage, 0);
> /*
> * This implies unable to support non-LRU pages.
> */
> - if (!PageLRU(p) && !PageHuge(p))
> + if (!PageLRU(hpage) && !PageHuge(p))
> goto put_out;
>
> /*
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mm/hwpoison-inject: check PageLRU of hpage
@ 2015-04-24 0:42 ` Dean Nelson
0 siblings, 0 replies; 8+ messages in thread
From: Dean Nelson @ 2015-04-24 0:42 UTC (permalink / raw)
To: Naoya Horiguchi
Cc: Andrew Morton, Andi Kleen, Andrea Arcangeli, Hidetoshi Seto,
linux-mm, linux-kernel
On 04/16/2015 09:08 PM, Naoya Horiguchi wrote:
> Hwpoison injector checks PageLRU of the raw target page to find out whether
> the page is an appropriate target, but current code now filters out thp tail
> pages, which prevents us from testing for such cases via this interface.
> So let's check hpage instead of p.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Dean Nelson <dnelson@redhat.com>
> ---
> mm/hwpoison-inject.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git v4.0.orig/mm/hwpoison-inject.c v4.0/mm/hwpoison-inject.c
> index 2b3f933e3282..4ca5fe0042e1 100644
> --- v4.0.orig/mm/hwpoison-inject.c
> +++ v4.0/mm/hwpoison-inject.c
> @@ -34,12 +34,12 @@ static int hwpoison_inject(void *data, u64 val)
> if (!hwpoison_filter_enable)
> goto inject;
>
> - if (!PageLRU(p) && !PageHuge(p))
> - shake_page(p, 0);
> + if (!PageLRU(hpage) && !PageHuge(p))
> + shake_page(hpage, 0);
> /*
> * This implies unable to support non-LRU pages.
> */
> - if (!PageLRU(p) && !PageHuge(p))
> + if (!PageLRU(hpage) && !PageHuge(p))
> goto put_out;
>
> /*
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-04-24 0:42 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-17 2:08 [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case Naoya Horiguchi
2015-04-17 2:08 ` Naoya Horiguchi
2015-04-17 2:08 ` [PATCH 2/2] mm/hwpoison-inject: check PageLRU of hpage Naoya Horiguchi
2015-04-17 2:08 ` Naoya Horiguchi
2015-04-24 0:42 ` Dean Nelson
2015-04-24 0:42 ` Dean Nelson
2015-04-24 0:42 ` [PATCH 1/2] mm/hwpoison-inject: fix refcounting in no-injection case Dean Nelson
2015-04-24 0:42 ` Dean Nelson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.