diff options
Diffstat (limited to 'arch/s390/mm/fault.c')
| -rw-r--r-- | arch/s390/mm/fault.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index e074480d3598..72af23bacbb5 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -341,7 +341,8 @@ static noinline int signal_return(struct pt_regs *regs)  	return -EACCES;  } -static noinline void do_fault_error(struct pt_regs *regs, int access, int fault) +static noinline void do_fault_error(struct pt_regs *regs, int access, +					vm_fault_t fault)  {  	int si_code; @@ -401,7 +402,7 @@ static noinline void do_fault_error(struct pt_regs *regs, int access, int fault)   *   11       Page translation     ->  Not present       (nullification)   *   3b       Region third trans.  ->  Not present       (nullification)   */ -static inline int do_exception(struct pt_regs *regs, int access) +static inline vm_fault_t do_exception(struct pt_regs *regs, int access)  {  	struct gmap *gmap;  	struct task_struct *tsk; @@ -411,7 +412,7 @@ static inline int do_exception(struct pt_regs *regs, int access)  	unsigned long trans_exc_code;  	unsigned long address;  	unsigned int flags; -	int fault; +	vm_fault_t fault;  	tsk = current;  	/* @@ -502,6 +503,8 @@ retry:  	/* No reason to continue if interrupted by SIGKILL. */  	if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) {  		fault = VM_FAULT_SIGNAL; +		if (flags & FAULT_FLAG_RETRY_NOWAIT) +			goto out_up;  		goto out;  	}  	if (unlikely(fault & VM_FAULT_ERROR)) @@ -562,7 +565,8 @@ out:  void do_protection_exception(struct pt_regs *regs)  {  	unsigned long trans_exc_code; -	int access, fault; +	int access; +	vm_fault_t fault;  	trans_exc_code = regs->int_parm_long;  	/* @@ -597,7 +601,8 @@ NOKPROBE_SYMBOL(do_protection_exception);  void do_dat_exception(struct pt_regs *regs)  { -	int access, fault; +	int access; +	vm_fault_t fault;  	access = VM_READ | VM_EXEC | VM_WRITE;  	fault = do_exception(regs, access);  |