malloc: randomize heap position
Use B_RANDOMIZE_BASE_ADDRESS for initial heap creation as well as for resizing it when keeping it contignuous is no longer possible.
This commit is contained in:
parent
17c189899a
commit
31eb9b8261
@ -99,12 +99,12 @@ __init_heap(void)
|
|||||||
// size of the heap is guaranteed until the space is really needed.
|
// size of the heap is guaranteed until the space is really needed.
|
||||||
sHeapBase = (void *)kHeapReservationBase;
|
sHeapBase = (void *)kHeapReservationBase;
|
||||||
status_t status = _kern_reserve_address_range((addr_t *)&sHeapBase,
|
status_t status = _kern_reserve_address_range((addr_t *)&sHeapBase,
|
||||||
B_EXACT_ADDRESS, kHeapReservationSize);
|
B_RANDOMIZED_BASE_ADDRESS, kHeapReservationSize);
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
sHeapBase = NULL;
|
sHeapBase = NULL;
|
||||||
|
|
||||||
sHeapArea = create_area("heap", (void **)&sHeapBase,
|
sHeapArea = create_area("heap", (void **)&sHeapBase,
|
||||||
status == B_OK ? B_EXACT_ADDRESS : B_BASE_ADDRESS,
|
status == B_OK ? B_EXACT_ADDRESS : B_RANDOMIZED_BASE_ADDRESS,
|
||||||
kInitialHeapSize, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
kInitialHeapSize, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
if (sHeapArea < B_OK)
|
if (sHeapArea < B_OK)
|
||||||
return sHeapArea;
|
return sHeapArea;
|
||||||
@ -271,8 +271,8 @@ hoardSbrk(long size)
|
|||||||
// allocation.
|
// allocation.
|
||||||
if (area < 0) {
|
if (area < 0) {
|
||||||
base = (void*)(sFreeHeapBase + sHeapAreaSize);
|
base = (void*)(sFreeHeapBase + sHeapAreaSize);
|
||||||
area = create_area("heap", &base, B_BASE_ADDRESS, newHeapSize,
|
area = create_area("heap", &base, B_RANDOMIZED_BASE_ADDRESS,
|
||||||
B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
newHeapSize, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (area < 0) {
|
if (area < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user