|
@@ -4053,6 +4053,11 @@ int handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
|
|
|
/* do counter updates before entering really critical section. */
|
|
|
check_sync_rss_stat(current);
|
|
|
|
|
|
+ if (!arch_vma_access_permitted(vma, flags & FAULT_FLAG_WRITE,
|
|
|
+ flags & FAULT_FLAG_INSTRUCTION,
|
|
|
+ flags & FAULT_FLAG_REMOTE))
|
|
|
+ return VM_FAULT_SIGSEGV;
|
|
|
+
|
|
|
/*
|
|
|
* Enable the memcg OOM handling for faults triggered in user
|
|
|
* space. Kernel faults are handled more gracefully.
|
|
@@ -4060,11 +4065,6 @@ int handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
|
|
|
if (flags & FAULT_FLAG_USER)
|
|
|
mem_cgroup_oom_enable();
|
|
|
|
|
|
- if (!arch_vma_access_permitted(vma, flags & FAULT_FLAG_WRITE,
|
|
|
- flags & FAULT_FLAG_INSTRUCTION,
|
|
|
- flags & FAULT_FLAG_REMOTE))
|
|
|
- return VM_FAULT_SIGSEGV;
|
|
|
-
|
|
|
if (unlikely(is_vm_hugetlb_page(vma)))
|
|
|
ret = hugetlb_fault(vma->vm_mm, vma, address, flags);
|
|
|
else
|