|
@@ -1325,8 +1325,11 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
|
|
|
|
|
check_same:
|
|
|
spin_lock(&mm->page_table_lock);
|
|
|
- if (unlikely(!pmd_same(pmd, *pmdp)))
|
|
|
+ if (unlikely(!pmd_same(pmd, *pmdp))) {
|
|
|
+ /* Someone else took our fault */
|
|
|
+ current_nid = -1;
|
|
|
goto out_unlock;
|
|
|
+ }
|
|
|
clear_pmdnuma:
|
|
|
pmd = pmd_mknonnuma(pmd);
|
|
|
set_pmd_at(mm, haddr, pmdp, pmd);
|