while(hole_end <= crashk_res.end) { 
while (hole_end <= crashk_res.end) { 
static struct page *kimage_alloc_crash_control_pages(	struct kimage *image, unsigned int order){	/* Control pages are special, they are the intermediaries	 * that are needed while we copy the rest of the pages	 * to their final resting place.  As such they must	 * not conflict with either the destination addresses	 * or memory the kernel is already using.	 *	 * Control pages are also the only pags we must allocate	 * when loading a crash kernel.  All of the other pages	 * are specified by the segments and we just memcpy	 * into them directly.	 *	 * The only case where we really need more than one of	 * these are for architectures where we cannot disable	 * the MMU and must instead generate an identity mapped	 * page table for all of the memory.	 *	 * Given the low demand this implements a very simple	 * allocator that finds the first hole of the appropriate	 * size in the reserved memory region, and allocates all	 * of the memory up to and including the hole.	 */	unsigned long hole_start, hole_end, size;	struct page *pages;	pages = NULL;	size = (1 << order) << PAGE_SHIFT;	hole_start = (image->control_page + (size - 1)) & ~(size - 1);	hole_end   = hole_start + size - 1;	while(hole_end <= crashk_res.end) {		unsigned long i;		if (hole_end > KEXEC_CONTROL_MEMORY_LIMIT) {			break;		}		if (hole_end > crashk_res.end) {			break;		}		/* See if I overlap any of the segments */		for(i = 0; i < image->nr_segments; i++) {			unsigned long mstart, mend;			mstart = image->segment[i].mem;			mend   = mstart + image->segment[i].memsz - 1;			if ((hole_end >= mstart) && (hole_start <= mend)) {				/* Advance the hole to the end of the segment */				hole_start = (mend + (size - 1)) & ~(size - 1);				hole_end   = hole_start + size - 1;				break;			}		}		/* If I don't overlap any segments I have found my hole! */		if (i == image->nr_segments) {			pages = pfn_to_page(hole_start >> PAGE_SHIFT);			break;		}	}	if (pages) {		image->control_page = hole_end;	}	return pages;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/72414d3f1d22fc3e311b162fca95c430048d38ce/kexec.c/clean/kernel/kexec.c