linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page()
@ 2015-02-10  4:37 Naoya Horiguchi
  0 siblings, 0 replies; only message in thread
From: Naoya Horiguchi @ 2015-02-10  4:37 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Andi Kleen, Tony Luck, Chen Gong, linux-mm, linux-kernel,
	Naoya Horiguchi

A race condition starts to be visible in recent mmotm, where a PG_hwpoison
flag is set on a migration source page *before* it's back in buddy page pool.
This is problematic because no page flag is supposed to be set when freeing
(see __free_one_page().) So the user-visible effect of this race is that it
could trigger the BUG_ON() when soft-offlining is called.

The root cause is that we call lru_add_drain_all() to make sure that the
page is in buddy, but that doesn't work because this function just schedules
a work item and doesn't wait its completion. drain_all_pages() does draining
directly, so simply dropping lru_add_drain_all() solves this problem.

Fixes: commit f15bdfa802bf ("mm/memory-failure.c: fix memory leak in successful soft offlining")
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: <stable@vger.kernel.org> [3.11+]
---
 mm/memory-failure.c | 2 --
 1 file changed, 2 deletions(-)

diff --git mmotm-2015-02-03-16-38.orig/mm/memory-failure.c mmotm-2015-02-03-16-38/mm/memory-failure.c
index b2a68bde8058..fa44054c205f 100644
--- mmotm-2015-02-03-16-38.orig/mm/memory-failure.c
+++ mmotm-2015-02-03-16-38/mm/memory-failure.c
@@ -1647,8 +1647,6 @@ static int __soft_offline_page(struct page *page, int flags)
 			 * setting PG_hwpoison.
 			 */
 			if (!is_free_buddy_page(page))
-				lru_add_drain_all();
-			if (!is_free_buddy_page(page))
 				drain_all_pages(page_zone(page));
 			SetPageHWPoison(page);
 			if (!is_free_buddy_page(page))
-- 
1.9.3

--
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] only message in thread

only message in thread, other threads:[~2015-02-10  4:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-10  4:37 [PATCH] mm: hwpoison: drop lru_add_drain_all() in __soft_offline_page() Naoya Horiguchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox