mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
protect stack cleanups by disabling interrupts
This commit is contained in:
parent
f50f45c593
commit
4ea7fabf1d
2 changed files with 5 additions and 6 deletions
|
@ -173,7 +173,7 @@ out:
|
|||
|
||||
int page_unmap(size_t viraddr, size_t npages)
|
||||
{
|
||||
//uint8_t ipi = 0;
|
||||
uint8_t ipi = 0;
|
||||
|
||||
spinlock_irqsave_lock(&page_lock);
|
||||
|
||||
|
@ -186,11 +186,8 @@ int page_unmap(size_t viraddr, size_t npages)
|
|||
//ipi = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* IPI isn't required because unmaping is only used by shutdown the system
|
||||
*/
|
||||
/*if (ipi)
|
||||
ipi_tlb_flush();*/
|
||||
if (ipi)
|
||||
ipi_tlb_flush();
|
||||
|
||||
spinlock_irqsave_unlock(&page_lock);
|
||||
|
||||
|
|
|
@ -223,9 +223,11 @@ int destroy_stack(void* viraddr, size_t sz)
|
|||
return -ENOMEM;
|
||||
|
||||
// unmap and destroy stack
|
||||
int8_t flag = irq_nested_disable();
|
||||
vma_free((size_t)viraddr-PAGE_SIZE, (size_t)viraddr+(npages+1)*PAGE_SIZE);
|
||||
page_unmap((size_t)viraddr, npages);
|
||||
put_pages(phyaddr, npages);
|
||||
irq_nested_enable(flag);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue