mirror of
https://github.com/ipxe/ipxe
synced 2025-12-08 18:30:28 +03:00
[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:
@@ -100,8 +100,8 @@ static void uheap_find ( void ) {
|
|||||||
DBGC ( &uheap, "UHEAP largest region is [%#08lx,%#08lx)\n",
|
DBGC ( &uheap, "UHEAP largest region is [%#08lx,%#08lx)\n",
|
||||||
start, end );
|
start, end );
|
||||||
|
|
||||||
/* Align start and end addresses */
|
/* Align start and end addresses, and prevent overflow to zero */
|
||||||
after = ( end & ( UHEAP_ALIGN - 1 ) );
|
after = ( end ? ( end & ( UHEAP_ALIGN - 1 ) ) : UHEAP_ALIGN );
|
||||||
before = ( ( -start ) & ( UHEAP_ALIGN - 1 ) );
|
before = ( ( -start ) & ( UHEAP_ALIGN - 1 ) );
|
||||||
strip = ( before + after );
|
strip = ( before + after );
|
||||||
if ( strip > size )
|
if ( strip > size )
|
||||||
|
|||||||
Reference in New Issue
Block a user