|
@@ -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;
|