libpayload: Fix memalign() for fragmented alignment regions

Found a bug in the memory allocator ;-)

If the total free space in an alignment region is large enough for an
allocation but fragmented, such that there is no contiguous, sufficient
large, free space in the region, memalign() was looking at the same
region again and again in an endless loop. The advancing to the next
region was just missing.

Change-Id: I3fad833804675ee495577ca2749b007f46b5ff69
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: http://review.coreboot.org/1906
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Tested-by: build bot (Jenkins)
This commit is contained in:
Nico Huber 2012-11-22 17:37:32 +01:00 committed by Patrick Georgi
parent 0a3f2393ae
commit 7a32e88f12
1 changed files with 3 additions and 0 deletions

View File

@ -387,6 +387,9 @@ look_further:
count = 0;
}
}
/* The free space in this region is fragmented,
so we will move on and try the next one: */
reg = reg->next;
goto look_further; // end condition is once a new region is allocated - it always has enough space
}