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