KernelHeap: do not crash the entire system
Previously, calling free_virtual_page(s) would cause an assertion fail if the address was not in the kernel heap range. Now, we just return.
This commit is contained in:
parent
ad9c7af0bf
commit
4021cb3ac0
@ -70,7 +70,7 @@ uint64_t KernelHeap::request_virtual_pages(uint64_t count)
|
|||||||
|
|
||||||
void KernelHeap::free_virtual_page(uint64_t address)
|
void KernelHeap::free_virtual_page(uint64_t address)
|
||||||
{
|
{
|
||||||
ASSERT(address >= ALLOC_BASE && address < ALLOC_END);
|
if (address < ALLOC_BASE || address >= ALLOC_END) return;
|
||||||
uint64_t index = (address - ALLOC_BASE) / PAGE_SIZE;
|
uint64_t index = (address - ALLOC_BASE) / PAGE_SIZE;
|
||||||
bitmap_set(index, false);
|
bitmap_set(index, false);
|
||||||
if (start_index > index) start_index = index;
|
if (start_index > index) start_index = index;
|
||||||
@ -78,7 +78,7 @@ void KernelHeap::free_virtual_page(uint64_t address)
|
|||||||
|
|
||||||
void KernelHeap::free_virtual_pages(uint64_t address, uint64_t count)
|
void KernelHeap::free_virtual_pages(uint64_t address, uint64_t count)
|
||||||
{
|
{
|
||||||
ASSERT(address >= ALLOC_BASE && address < ALLOC_END);
|
if (address < ALLOC_BASE || address >= ALLOC_END) return;
|
||||||
uint64_t index = (address - ALLOC_BASE) / PAGE_SIZE;
|
uint64_t index = (address - ALLOC_BASE) / PAGE_SIZE;
|
||||||
for (uint64_t i = 0; i < count; i++) { bitmap_set(index + i, false); }
|
for (uint64_t i = 0; i < count; i++) { bitmap_set(index + i, false); }
|
||||||
if (start_index > index) start_index = index;
|
if (start_index > index) start_index = index;
|
||||||
|
Loading…
Reference in New Issue
Block a user