From: Yinghai Lu Date: Fri, 18 May 2012 01:51:11 +0000 (-0700) Subject: resources: allow adjust_resource() for resources with no parent X-Git-Tag: v3.6-rc1~112^2~21^2~28 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=82ec90eac304e81b1389175b4dded7abecc678ef;p=~emulex%2Finfiniband.git resources: allow adjust_resource() for resources with no parent If a resource has no parent, allow its start/end to be set arbitrarily as long as any children are still contained within the new range. [bhelgaas: changelog] Signed-off-by: Yinghai Lu Signed-off-by: Bjorn Helgaas --- diff --git a/kernel/resource.c b/kernel/resource.c index e1d2b8ee76d..dc8b4776444 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;