All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@techsingularity.net>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Naoya Horiguchi <nao.horiguchi@gmail.com>
Subject: Re: [PATCH v1] mm: bad_page() checks bad_flags instead of page->flags for hwpoison page
Date: Wed, 18 May 2016 09:30:41 +0200	[thread overview]
Message-ID: <573C1A21.6030006@suse.cz> (raw)
In-Reply-To: <1463470975-29972-1-git-send-email-n-horiguchi@ah.jp.nec.com>

On 05/17/2016 09:42 AM, Naoya Horiguchi wrote:
> There's a race window between checking page->flags and unpoisoning, which
> taints kernel with "BUG: Bad page state". That's overkill. It's safer to
> use bad_flags to detect hwpoisoned page.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
> ---
>   mm/page_alloc.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git tmp/mm/page_alloc.c tmp_patched/mm/page_alloc.c
> index 5b269bc..4e0fa37 100644
> --- tmp/mm/page_alloc.c
> +++ tmp_patched/mm/page_alloc.c
> @@ -522,8 +522,8 @@ static void bad_page(struct page *page, const char *reason,
>   	static unsigned long nr_shown;
>   	static unsigned long nr_unshown;
>
> -	/* Don't complain about poisoned pages */
> -	if (PageHWPoison(page)) {
> +	/* Don't complain about hwpoisoned pages */
> +	if (bad_flags == __PG_HWPOISON) {

This will wrongly return prematurely on !CONFIG_MEMORY_FAILURE where 
__PG_HWPOISON == 0 and bad_page() called for other reasons than bad flags?

>   		page_mapcount_reset(page); /* remove PageBuddy */
>   		return;
>   	}
>

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Vlastimil Babka <vbabka@suse.cz>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: Mel Gorman <mgorman@techsingularity.net>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Naoya Horiguchi <nao.horiguchi@gmail.com>
Subject: Re: [PATCH v1] mm: bad_page() checks bad_flags instead of page->flags for hwpoison page
Date: Wed, 18 May 2016 09:30:41 +0200	[thread overview]
Message-ID: <573C1A21.6030006@suse.cz> (raw)
In-Reply-To: <1463470975-29972-1-git-send-email-n-horiguchi@ah.jp.nec.com>

On 05/17/2016 09:42 AM, Naoya Horiguchi wrote:
> There's a race window between checking page->flags and unpoisoning, which
> taints kernel with "BUG: Bad page state". That's overkill. It's safer to
> use bad_flags to detect hwpoisoned page.
>
> Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
> ---
>   mm/page_alloc.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git tmp/mm/page_alloc.c tmp_patched/mm/page_alloc.c
> index 5b269bc..4e0fa37 100644
> --- tmp/mm/page_alloc.c
> +++ tmp_patched/mm/page_alloc.c
> @@ -522,8 +522,8 @@ static void bad_page(struct page *page, const char *reason,
>   	static unsigned long nr_shown;
>   	static unsigned long nr_unshown;
>
> -	/* Don't complain about poisoned pages */
> -	if (PageHWPoison(page)) {
> +	/* Don't complain about hwpoisoned pages */
> +	if (bad_flags == __PG_HWPOISON) {

This will wrongly return prematurely on !CONFIG_MEMORY_FAILURE where 
__PG_HWPOISON == 0 and bad_page() called for other reasons than bad flags?

>   		page_mapcount_reset(page); /* remove PageBuddy */
>   		return;
>   	}
>

  reply	other threads:[~2016-05-18  7:30 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17  7:42 [PATCH v1] mm: bad_page() checks bad_flags instead of page->flags for hwpoison page Naoya Horiguchi
2016-05-17  7:42 ` Naoya Horiguchi
2016-05-18  7:30 ` Vlastimil Babka [this message]
2016-05-18  7:30   ` Vlastimil Babka
2016-05-18  9:21 ` Mel Gorman
2016-05-18  9:21   ` Mel Gorman
2016-05-18  9:31   ` Vlastimil Babka
2016-05-18  9:31     ` Vlastimil Babka
2016-05-18  9:52     ` Mel Gorman
2016-05-18  9:52       ` Mel Gorman
2016-05-18 10:17       ` Naoya Horiguchi
2016-05-18 10:17         ` Naoya Horiguchi
2016-05-18 10:09     ` [PATCH v2] mm: check_new_page_bad() directly returns in __PG_HWPOISON case Naoya Horiguchi
2016-05-18 10:09       ` Naoya Horiguchi
2016-05-18 14:03       ` Mel Gorman
2016-05-18 14:03         ` Mel Gorman
2016-05-20 14:27         ` Vlastimil Babka
2016-05-20 14:27           ` Vlastimil Babka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=573C1A21.6030006@suse.cz \
    --to=vbabka@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=nao.horiguchi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.