if (new->start < new->end && new->end - new->start + 1 >= size) { 
if (new->start < new->end && new->end - new->start >= size - 1) { 
static int find_resource(struct resource *root, struct resource *new,			 unsigned long size,			 unsigned long min, unsigned long max,			 unsigned long align,			 void (*alignf)(void *, struct resource *,					unsigned long, unsigned long),			 void *alignf_data){	struct resource *this = root->child;	new->start = root->start;	/*	 * Skip past an allocated resource that starts at 0, since the assignment	 * of this->start - 1 to new->end below would cause an underflow.	 */	if (this && this->start == 0) {		new->start = this->end + 1;		this = this->sibling;	}	for(;;) {		if (this)			new->end = this->start - 1;		else			new->end = root->end;		if (new->start < min)			new->start = min;		if (new->end > max)			new->end = max;		new->start = (new->start + align - 1) & ~(align - 1);		if (alignf)			alignf(alignf_data, new, size, align);		if (new->start < new->end && new->end - new->start + 1 >= size) {			new->end = new->start + size - 1;			return 0;		}		if (!this)			break;		new->start = this->end + 1;		this = this->sibling;	}	return -EBUSY;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b52402c783d8c16b11f146a244bb21086a94bf84/resource.c/buggy/kernel/resource.c