X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=kernel%2Fresource.c;h=46286434af8066af359143df81244e0c3024de19;hb=3fa7c794fe4dc127f7fac3fad4d13628e68f89ce;hp=0dd3a857579e4fe1b9aae9463aac4717e149eaa9;hpb=225ec70a8cf5086a70d755e394c56186a30053d3;p=powerpc.git diff --git a/kernel/resource.c b/kernel/resource.c index 0dd3a85757..46286434af 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -244,6 +244,7 @@ int find_next_system_ram(struct resource *res) start = res->start; end = res->end; + BUG_ON(start >= end); read_lock(&resource_lock); for (p = iomem_resource.child; p ; p = p->sibling) { @@ -254,15 +255,17 @@ int find_next_system_ram(struct resource *res) p = NULL; break; } - if (p->start >= start) + if ((p->end >= start) && (p->start < end)) break; } read_unlock(&resource_lock); if (!p) return -1; /* copy data */ - res->start = p->start; - res->end = p->end; + if (res->start < p->start) + res->start = p->start; + if (res->end > p->end) + res->end = p->end; return 0; } #endif