diff options
Diffstat (limited to 'arch/sh/mm/fault.c')
-rw-r--r-- | arch/sh/mm/fault.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 1f49c28affa9..541dc6101508 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c | |||
@@ -400,9 +400,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
400 | struct mm_struct *mm; | 400 | struct mm_struct *mm; |
401 | struct vm_area_struct * vma; | 401 | struct vm_area_struct * vma; |
402 | int fault; | 402 | int fault; |
403 | int write = error_code & FAULT_CODE_WRITE; | 403 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; |
404 | unsigned int flags = (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | | ||
405 | (write ? FAULT_FLAG_WRITE : 0)); | ||
406 | 404 | ||
407 | tsk = current; | 405 | tsk = current; |
408 | mm = tsk->mm; | 406 | mm = tsk->mm; |
@@ -476,6 +474,11 @@ good_area: | |||
476 | 474 | ||
477 | set_thread_fault_code(error_code); | 475 | set_thread_fault_code(error_code); |
478 | 476 | ||
477 | if (user_mode(regs)) | ||
478 | flags |= FAULT_FLAG_USER; | ||
479 | if (error_code & FAULT_CODE_WRITE) | ||
480 | flags |= FAULT_FLAG_WRITE; | ||
481 | |||
479 | /* | 482 | /* |
480 | * If for any reason at all we couldn't handle the fault, | 483 | * If for any reason at all we couldn't handle the fault, |
481 | * make sure we exit gracefully rather than endlessly redo | 484 | * make sure we exit gracefully rather than endlessly redo |