1
0
Fork 0
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:
Stefan Lankes 2016-08-30 00:00:00 +02:00
parent f50f45c593
commit 4ea7fabf1d
2 changed files with 5 additions and 6 deletions

View file

@ -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);

View file

@ -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;
}