  /* * We ran out of memory, or some other thing happened to us that made * us unable to handle the page fault gracefully. */ do_sigbus: /* * Send a sigbus, regardless of whether we were in kernel * or user mode. */ tsk->thread.address = addr; tsk->thread.error_code = fsr; tsk->thread.trap_no = 14; force_sig(SIGBUS, tsk); #ifdef CONFIG_DEBUG_USER if (user_debug & UDBG_BUS) { printk(KERN_DEBUG "%s: sigbus at 0x%08lx, pc=0x%08lx\n", current->comm, addr, instruction_pointer(regs)); } #endif  /* Kernel mode? Handle exceptions or die */ if (user_mode(regs)) return 0; 
do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs){	struct task_struct *tsk;	struct mm_struct *mm;	int fault;	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;	/*	 * We had some memory, but were unable to	 * successfully fix up this page fault.	 */	if (fault == 0)		goto do_sigbus;	/*	 * 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;	if (fault == 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);	} else		__do_user_fault(tsk, addr, fsr, fault == VM_FAULT_BADACCESS ?				SEGV_ACCERR : SEGV_MAPERR, regs);	return 0;/* * We ran out of memory, or some other thing happened to us that made * us unable to handle the page fault gracefully. */do_sigbus:	/*	 * Send a sigbus, regardless of whether we were in kernel	 * or user mode.	 */	tsk->thread.address = addr;	tsk->thread.error_code = fsr;	tsk->thread.trap_no = 14;	force_sig(SIGBUS, tsk);#ifdef CONFIG_DEBUG_USER	if (user_debug & UDBG_BUS) {		printk(KERN_DEBUG "%s: sigbus at 0x%08lx, pc=0x%08lx\n",			current->comm, addr, instruction_pointer(regs));	}#endif	/* Kernel mode? Handle exceptions or die */	if (user_mode(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/2d137c24e9f433e37ffd10b3d5f418157589a8d2/fault.c/clean/arch/arm/mm/fault.c