projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mm: include VM_MIXEDMAP flag in the VM_SPECIAL list to avoid m(un)locking
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
mm
/
huge_memory.c
diff --git
a/mm/huge_memory.c
b/mm/huge_memory.c
index
da23eb9
..
1546655
100644
(file)
--- a/
mm/huge_memory.c
+++ b/
mm/huge_memory.c
@@
-1166,8
+1166,10
@@
alloc:
} else {
ret = do_huge_pmd_wp_page_fallback(mm, vma, address,
pmd, orig_pmd, page, haddr);
} else {
ret = do_huge_pmd_wp_page_fallback(mm, vma, address,
pmd, orig_pmd, page, haddr);
- if (ret & VM_FAULT_OOM)
+ if (ret & VM_FAULT_OOM)
{
split_huge_page(page);
split_huge_page(page);
+ ret |= VM_FAULT_FALLBACK;
+ }
put_page(page);
}
count_vm_event(THP_FAULT_FALLBACK);
put_page(page);
}
count_vm_event(THP_FAULT_FALLBACK);
@@
-1179,9
+1181,10
@@
alloc:
if (page) {
split_huge_page(page);
put_page(page);
if (page) {
split_huge_page(page);
put_page(page);
- }
+ } else
+ split_huge_page_pmd(vma, address, pmd);
+ ret |= VM_FAULT_FALLBACK;
count_vm_event(THP_FAULT_FALLBACK);
count_vm_event(THP_FAULT_FALLBACK);
- ret |= VM_FAULT_OOM;
goto out;
}
goto out;
}
@@
-1958,7
+1961,7
@@
out:
return ret;
}
return ret;
}
-#define VM_NO_THP (VM_SPECIAL
|VM_MIXEDMAP|VM_HUGETLB|VM_SHARED|
VM_MAYSHARE)
+#define VM_NO_THP (VM_SPECIAL
| VM_HUGETLB | VM_SHARED |
VM_MAYSHARE)
int hugepage_madvise(struct vm_area_struct *vma,
unsigned long *vm_flags, int advice)
int hugepage_madvise(struct vm_area_struct *vma,
unsigned long *vm_flags, int advice)