diff options
Diffstat (limited to 'kernel/resource.c')
| -rw-r--r-- | kernel/resource.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/resource.c b/kernel/resource.c index e1d2b8ee76d5..dc8b47764443 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -722,14 +722,12 @@ int adjust_resource(struct resource *res, resource_size_t start, resource_size_t  	write_lock(&resource_lock); +	if (!parent) +		goto skip; +  	if ((start < parent->start) || (end > parent->end))  		goto out; -	for (tmp = res->child; tmp; tmp = tmp->sibling) { -		if ((tmp->start < start) || (tmp->end > end)) -			goto out; -	} -  	if (res->sibling && (res->sibling->start <= end))  		goto out; @@ -741,6 +739,11 @@ int adjust_resource(struct resource *res, resource_size_t start, resource_size_t  			goto out;  	} +skip: +	for (tmp = res->child; tmp; tmp = tmp->sibling) +		if ((tmp->start < start) || (tmp->end > end)) +			goto out; +  	res->start = start;  	res->end = end;  	result = 0;  | 
