From 34414e2fce2446862af313f219caecf213680d50 Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Thu, 17 May 2012 18:51:11 -0700 Subject: [PATCH] --- yaml --- r: 316425 b: refs/heads/master c: 82ec90eac304e81b1389175b4dded7abecc678ef h: refs/heads/master i: 316423: aedaf495b3ad6febf0c26b2d71481b20bc8b5e2e v: v3 --- [refs] | 2 +- trunk/kernel/resource.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 97062205e732..04b19345fdda 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5cc62c202211096ec26309722ec27455d52c8726 +refs/heads/master: 82ec90eac304e81b1389175b4dded7abecc678ef diff --git a/trunk/kernel/resource.c b/trunk/kernel/resource.c index e1d2b8ee76d5..dc8b47764443 100644 --- a/trunk/kernel/resource.c +++ b/trunk/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;