Merge branch 'linus' into x86/mm

x86/mm is on 32-rc4 and missing the spinlock namespace changes which
are needed for further commits into this topic.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Thomas Gleixner
2010-02-17 18:27:37 +01:00
9975 changed files with 840962 additions and 440718 deletions

View File

@@ -321,35 +321,37 @@ static int find_resource(struct resource *root, struct resource *new,
void *alignf_data)
{
struct resource *this = root->child;
struct resource tmp = *new;
new->start = root->start;
tmp.start = root->start;
/*
* Skip past an allocated resource that starts at 0, since the assignment
* of this->start - 1 to new->end below would cause an underflow.
* of this->start - 1 to tmp->end below would cause an underflow.
*/
if (this && this->start == 0) {
new->start = this->end + 1;
tmp.start = this->end + 1;
this = this->sibling;
}
for(;;) {
if (this)
new->end = this->start - 1;
tmp.end = this->start - 1;
else
new->end = root->end;
if (new->start < min)
new->start = min;
if (new->end > max)
new->end = max;
new->start = ALIGN(new->start, align);
tmp.end = root->end;
if (tmp.start < min)
tmp.start = min;
if (tmp.end > max)
tmp.end = max;
tmp.start = ALIGN(tmp.start, align);
if (alignf)
alignf(alignf_data, new, size, align);
if (new->start < new->end && new->end - new->start >= size - 1) {
new->end = new->start + size - 1;
alignf(alignf_data, &tmp, size, align);
if (tmp.start < tmp.end && tmp.end - tmp.start >= size - 1) {
new->start = tmp.start;
new->end = tmp.start + size - 1;
return 0;
}
if (!this)
break;
new->start = this->end + 1;
tmp.start = this->end + 1;
this = this->sibling;
}
return -EBUSY;