projects
/
GitHub
/
mt8127
/
android_kernel_alcatel_ttab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.10.86' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git]
/
mm
/
memory.c
diff --git
a/mm/memory.c
b/mm/memory.c
index 9feed4bfb32366d3356ba6dcc6390c748655ca75..313d94a9ae260fcdf1d4da7de288b055171afd7d 100644
(file)
--- a/
mm/memory.c
+++ b/
mm/memory.c
@@
-3538,6
+3538,9
@@
static int do_linear_fault(struct mm_struct *mm, struct vm_area_struct *vma,
return VM_FAULT_SIGBUS;
pte_unmap(page_table);
return VM_FAULT_SIGBUS;
pte_unmap(page_table);
+ /* The VMA was not fully populated on mmap() or missing VM_DONTEXPAND */
+ if (!vma->vm_ops->fault)
+ return VM_FAULT_SIGBUS;
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}
return __do_fault(mm, vma, address, pmd, pgoff, flags, orig_pte);
}
@@
-3749,10
+3752,9
@@
int handle_pte_fault(struct mm_struct *mm,
entry = *pte;
if (!pte_present(entry)) {
if (pte_none(entry)) {
entry = *pte;
if (!pte_present(entry)) {
if (pte_none(entry)) {
- if (vma->vm_ops)
{
+ if (vma->vm_ops)
return do_linear_fault(mm, vma, address,
return do_linear_fault(mm, vma, address,
- pte, pmd, flags, entry);
- }
+ pte, pmd, flags, entry);
return do_anonymous_page(mm, vma, address,
pte, pmd, flags);
}
return do_anonymous_page(mm, vma, address,
pte, pmd, flags);
}