Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320428
b: refs/heads/master
c: f2c76e3
h: refs/heads/master
v: v3
  • Loading branch information
Heiko Carstens authored and Martin Schwidefsky committed Jul 30, 2012
1 parent a8596d8 commit 2be6a34
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 216550e4fd5ade3f255bd5460db6b59e57f5f8c2
refs/heads/master: f2c76e3b6f72c3fda290998109594dc490b8b087
12 changes: 11 additions & 1 deletion trunk/arch/s390/mm/fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
#define VM_FAULT_BADCONTEXT 0x010000
#define VM_FAULT_BADMAP 0x020000
#define VM_FAULT_BADACCESS 0x040000
#define VM_FAULT_SIGNAL 0x080000

static unsigned long store_indication;

Expand Down Expand Up @@ -229,6 +230,10 @@ static noinline void do_fault_error(struct pt_regs *regs, int fault)
case VM_FAULT_BADCONTEXT:
do_no_context(regs);
break;
case VM_FAULT_SIGNAL:
if (!user_mode(regs))
do_no_context(regs);
break;
default: /* fault & VM_FAULT_ERROR */
if (fault & VM_FAULT_OOM) {
if (!(regs->psw.mask & PSW_MASK_PSTATE))
Expand Down Expand Up @@ -286,7 +291,7 @@ static inline int do_exception(struct pt_regs *regs, int access)

address = trans_exc_code & __FAIL_ADDR_MASK;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
flags = FAULT_FLAG_ALLOW_RETRY;
flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
if (access == VM_WRITE || (trans_exc_code & store_indication) == 0x400)
flags |= FAULT_FLAG_WRITE;
down_read(&mm->mmap_sem);
Expand Down Expand Up @@ -335,6 +340,11 @@ static inline int do_exception(struct pt_regs *regs, int access)
* the fault.
*/
fault = handle_mm_fault(mm, vma, address, flags);
/* No reason to continue if interrupted by SIGKILL. */
if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) {
fault = VM_FAULT_SIGNAL;
goto out;
}
if (unlikely(fault & VM_FAULT_ERROR))
goto out_up;

Expand Down

0 comments on commit 2be6a34

Please sign in to comment.