linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hugetlb: detect race if fail to COW
@ 2011-11-18 14:04 Hillf Danton
  2011-11-18 14:16 ` John Kacur
  2011-11-18 15:07 ` Michal Hocko
  0 siblings, 2 replies; 12+ messages in thread
From: Hillf Danton @ 2011-11-18 14:04 UTC (permalink / raw)
  To: Andrea Arcangeli
  Cc: Andrew Morton, Michal Hocko, Johannes Weiner, linux-mm, LKML

In the error path that we fail to allocate new huge page, before try again, we
have to check race since page_table_lock is re-acquired.

If racing, our job is done.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
---

--- a/mm/hugetlb.c	Fri Nov 18 21:38:30 2011
+++ b/mm/hugetlb.c	Fri Nov 18 21:48:15 2011
@@ -2407,7 +2407,14 @@ retry_avoidcopy:
 				BUG_ON(page_count(old_page) != 1);
 				BUG_ON(huge_pte_none(pte));
 				spin_lock(&mm->page_table_lock);
-				goto retry_avoidcopy;
+				ptep = huge_pte_offset(mm, address & huge_page_mask(h));
+				if (likely(pte_same(huge_ptep_get(ptep), pte)))
+					goto retry_avoidcopy;
+				/*
+				 * race occurs while re-acquiring page_table_lock, and
+				 * our job is done.
+				 */
+				return 0;
 			}
 			WARN_ON_ONCE(1);
 		}

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-11-21 14:46 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-18 14:04 [PATCH] hugetlb: detect race if fail to COW Hillf Danton
2011-11-18 14:16 ` John Kacur
2011-11-18 14:21   ` John Kacur
2011-11-18 14:46     ` Hillf Danton
2011-11-18 15:07 ` Michal Hocko
2011-11-18 15:23   ` Hillf Danton
2011-11-18 16:11     ` Michal Hocko
2011-11-18 19:39       ` Andrew Morton
2011-11-19  3:26         ` Hillf Danton
2011-11-21 12:23       ` Michal Hocko
2011-11-21 14:16         ` Michal Hocko
2011-11-21 14:46           ` [PATCH] hugetlb: clarify hugetlb_instantiation_mutex usage Michal Hocko

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