projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v3.10.64' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git]
/
arch
/
metag
/
mm
/
fault.c
diff --git
a/arch/metag/mm/fault.c
b/arch/metag/mm/fault.c
index 2c75bf7357c58deec87850b5cf293d510ddd9743..332680e5ebf23c7909b796c415c2273efd77ba3c 100644
(file)
--- a/
arch/metag/mm/fault.c
+++ b/
arch/metag/mm/fault.c
@@
-53,8
+53,7
@@
int do_page_fault(struct pt_regs *regs, unsigned long address,
struct vm_area_struct *vma, *prev_vma;
siginfo_t info;
int fault;
struct vm_area_struct *vma, *prev_vma;
siginfo_t info;
int fault;
- unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
- (write_access ? FAULT_FLAG_WRITE : 0);
+ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
tsk = current;
tsk = current;
@@
-109,6
+108,8
@@
int do_page_fault(struct pt_regs *regs, unsigned long address,
if (in_atomic() || !mm)
goto no_context;
if (in_atomic() || !mm)
goto no_context;
+ if (user_mode(regs))
+ flags |= FAULT_FLAG_USER;
retry:
down_read(&mm->mmap_sem);
retry:
down_read(&mm->mmap_sem);
@@
-121,6
+122,7
@@
good_area:
if (write_access) {
if (!(vma->vm_flags & VM_WRITE))
goto bad_area;
if (write_access) {
if (!(vma->vm_flags & VM_WRITE))
goto bad_area;
+ flags |= FAULT_FLAG_WRITE;
} else {
if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
goto bad_area;
} else {
if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
goto bad_area;
@@
-224,8
+226,10
@@
do_sigbus:
*/
out_of_memory:
up_read(&mm->mmap_sem);
*/
out_of_memory:
up_read(&mm->mmap_sem);
- if (user_mode(regs))
- do_group_exit(SIGKILL);
+ if (user_mode(regs)) {
+ pagefault_out_of_memory();
+ return 1;
+ }
no_context:
/* Are we prepared to handle this kernel fault? */
no_context:
/* Are we prepared to handle this kernel fault? */