diff options
Diffstat (limited to 'arch/unicore32/mm/fault.c')
| -rw-r--r-- | arch/unicore32/mm/fault.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c index 76342de9cf8c..3022104aa613 100644 --- a/arch/unicore32/mm/fault.c +++ b/arch/unicore32/mm/fault.c @@ -149,7 +149,7 @@ void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)   */  static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma)  { -	unsigned int mask = VM_READ | VM_WRITE | VM_EXEC; +	unsigned int mask = VM_ACCESS_FLAGS;  	if (!(fsr ^ 0x12))	/* write? */  		mask = VM_WRITE; @@ -202,7 +202,7 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs)  	struct mm_struct *mm;  	int sig, code;  	vm_fault_t fault; -	unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +	unsigned int flags = FAULT_FLAG_DEFAULT;  	tsk = current;  	mm = tsk->mm; @@ -250,7 +250,7 @@ retry:  	 * signal first. We do not need to release the mmap_sem because  	 * it would already be released in __lock_page_or_retry in  	 * mm/filemap.c. */ -	if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) +	if (fault_signal_pending(fault, regs))  		return 0;  	if (!(fault & VM_FAULT_ERROR) && (flags & FAULT_FLAG_ALLOW_RETRY)) { @@ -259,9 +259,7 @@ retry:  		else  			tsk->min_flt++;  		if (fault & VM_FAULT_RETRY) { -			/* Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk -			* of starvation. */ -			flags &= ~FAULT_FLAG_ALLOW_RETRY; +			flags |= FAULT_FLAG_TRIED;  			goto retry;  		}  	}  |