diff options
Diffstat (limited to 'kernel/resource.c')
| -rw-r--r-- | kernel/resource.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/kernel/resource.c b/kernel/resource.c index 3b3cedc52592..c8dc249da5ce 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -419,6 +419,9 @@ static int __find_resource(struct resource *root, struct resource *old,  		else  			tmp.end = root->end; +		if (tmp.end < tmp.start) +			goto next; +  		resource_clip(&tmp, constraint->min, constraint->max);  		arch_remove_reservations(&tmp); @@ -436,8 +439,10 @@ static int __find_resource(struct resource *root, struct resource *old,  				return 0;  			}  		} -		if (!this) + +next:		if (!this || this->end == root->end)  			break; +  		if (this != old)  			tmp.start = this->end + 1;  		this = this->sibling; | 
