diff options
Diffstat (limited to 'arch/m68k/mm/fault.c')
| -rw-r--r-- | arch/m68k/mm/fault.c | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index e9b1d7585b43..3bfb5c8ac3c7 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c @@ -71,7 +71,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,  	struct mm_struct *mm = current->mm;  	struct vm_area_struct * vma;  	vm_fault_t fault; -	unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +	unsigned int flags = FAULT_FLAG_DEFAULT;  	pr_debug("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",  		regs->sr, regs->pc, address, error_code, mm ? mm->pgd : NULL); @@ -125,7 +125,7 @@ good_area:  		case 1:		/* read, present */  			goto acc_err;  		case 0:		/* read, not present */ -			if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))) +			if (unlikely(!vma_is_accessible(vma)))  				goto acc_err;  	} @@ -138,7 +138,7 @@ good_area:  	fault = handle_mm_fault(vma, address, flags);  	pr_debug("handle_mm_fault returns %x\n", fault); -	if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) +	if (fault_signal_pending(fault, regs))  		return 0;  	if (unlikely(fault & VM_FAULT_ERROR)) { @@ -162,9 +162,6 @@ good_area:  		else  			current->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;  			/*  |