if (fault > 0) 
if (fault >= VM_FAULT_MINOR) 
do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs){	struct task_struct *tsk;	struct mm_struct *mm;	int fault, sig, code;	tsk = current;	mm  = tsk->mm;	/*	 * If we're in an interrupt or have no user	 * context, we must not take the fault..	 */	if (in_interrupt() || !mm)		goto no_context;	down_read(&mm->mmap_sem);	fault = __do_page_fault(mm, addr, fsr, tsk);	up_read(&mm->mmap_sem);	/*	 * Handle the "normal" case first	 */	if (fault > 0)		return 0;	/*	 * If we are in kernel mode at this point, we	 * have no context to handle this fault with.	 */	if (!user_mode(regs))		goto no_context;	switch (fault) {	case VM_FAULT_OOM:		/*		 * We ran out of memory, or some other thing		 * happened to us that made us unable to handle		 * the page fault gracefully.		 */		printk("VM: killing process %s\n", tsk->comm);		do_exit(SIGKILL);		return 0;	case 0:		/*		 * We had some memory, but were unable to		 * successfully fix up this page fault.		 */		sig = SIGBUS;		code = BUS_ADRERR;		break;	default:		/*		 * Something tried to access memory that		 * isn't in our memory map..		 */		sig = SIGSEGV;		code = fault == VM_FAULT_BADACCESS ?			SEGV_ACCERR : SEGV_MAPERR;		break;	}	__do_user_fault(tsk, addr, fsr, sig, code, regs);	return 0;no_context:	__do_kernel_fault(mm, addr, fsr, regs);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ff2afb9df607dfcaacdaf67ea84b773c6fb08f4c/fault.c/clean/arch/arm/mm/fault.c