[uheap] Prevent allocation of blocks with zero physical addresses

If the external heap ends up at the top of the system memory map then
leave a gap after the heap to ensure that no block ends up being
allocated with either a start or end address of zero, since this is
frequently confusing to both code and humans.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-05-22 16:05:37 +01:00
parent b9095a045a
commit e056041074

View File

@@ -100,8 +100,8 @@ static void uheap_find ( void ) {
DBGC ( &uheap, "UHEAP largest region is [%#08lx,%#08lx)\n",
start, end );
/* Align start and end addresses */
after = ( end & ( UHEAP_ALIGN - 1 ) );
/* Align start and end addresses, and prevent overflow to zero */
after = ( end ? ( end & ( UHEAP_ALIGN - 1 ) ) : UHEAP_ALIGN );
before = ( ( -start ) & ( UHEAP_ALIGN - 1 ) );
strip = ( before + after );
if ( strip > size )