* If we are out of memory for pid1, * sleep for a while and retry 
* If we are out of memory for pid1, sleep for a while and retry 
__do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,		struct task_struct *tsk){	struct vm_area_struct *vma;	int fault, mask;	vma = find_vma(mm, addr);	fault = VM_FAULT_BADMAP;	if (!vma)		goto out;	if (vma->vm_start > addr)		goto check_stack;	/*	 * Ok, we have a good vm_area for this	 * memory access, so we can handle it.	 */good_area:	if (fsr & (1 << 11)) /* write? */		mask = VM_WRITE;	else		mask = VM_READ|VM_EXEC;	fault = VM_FAULT_BADACCESS;	if (!(vma->vm_flags & mask))		goto out;	/*	 * If for any reason at all we couldn't handle	 * the fault, make sure we exit gracefully rather	 * than endlessly redo the fault.	 */survive:	fault = handle_mm_fault(mm, vma, addr & PAGE_MASK, fsr & (1 << 11));	/*	 * Handle the "normal" cases first - successful and sigbus	 */	switch (fault) {	case VM_FAULT_MAJOR:		tsk->maj_flt++;		return fault;	case VM_FAULT_MINOR:		tsk->min_flt++;	case VM_FAULT_SIGBUS:		return fault;	}	if (tsk->pid != 1)		goto out;	/*	 * If we are out of memory for pid1,	 * sleep for a while and retry	 */	yield();	goto survive;check_stack:	if (vma->vm_flags & VM_GROWSDOWN && !expand_stack(vma, addr))		goto good_area;out:	return fault;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2d137c24e9f433e37ffd10b3d5f418157589a8d2/fault.c/clean/arch/arm/mm/fault.c