| From 107437febd495a50e2cd09c81bbaa84d30e57b07 Mon Sep 17 00:00:00 2001 |
| From: Rik van Riel <riel@redhat.com> |
| Date: Tue, 29 Apr 2014 15:36:15 -0400 |
| Subject: mm/numa: Remove BUG_ON() in __handle_mm_fault() |
| |
| From: Rik van Riel <riel@redhat.com> |
| |
| commit 107437febd495a50e2cd09c81bbaa84d30e57b07 upstream. |
| |
| Changing PTEs and PMDs to pte_numa & pmd_numa is done with the |
| mmap_sem held for reading, which means a pmd can be instantiated |
| and turned into a numa one while __handle_mm_fault() is examining |
| the value of old_pmd. |
| |
| If that happens, __handle_mm_fault() should just return and let |
| the page fault retry, instead of throwing an oops. This is |
| handled by the test for pmd_trans_huge(*pmd) below. |
| |
| Signed-off-by: Rik van Riel <riel@redhat.com> |
| Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> |
| Reported-by: Sunil Pandey <sunil.k.pandey@intel.com> |
| Signed-off-by: Peter Zijlstra <peterz@infradead.org> |
| Cc: Andrew Morton <akpm@linux-foundation.org> |
| Cc: Johannes Weiner <hannes@cmpxchg.org> |
| Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Mel Gorman <mgorman@suse.de> |
| Cc: linux-mm@kvack.org |
| Cc: lwoodman@redhat.com |
| Cc: dave.hansen@intel.com |
| Link: http://lkml.kernel.org/r/20140429153615.2d72098e@annuminas.surriel.com |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Patrick McLean <chutzpah@gentoo.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| mm/memory.c | 3 --- |
| 1 file changed, 3 deletions(-) |
| |
| --- a/mm/memory.c |
| +++ b/mm/memory.c |
| @@ -3756,9 +3756,6 @@ static int __handle_mm_fault(struct mm_s |
| } |
| } |
| |
| - /* THP should already have been handled */ |
| - BUG_ON(pmd_numa(*pmd)); |
| - |
| /* |
| * Use __pte_alloc instead of pte_alloc_map, because we can't |
| * run pte_offset_map on the pmd, if an huge pmd could |