mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:07:34 +00:00
Kernel: Disable interrupts throughout ~Region()
We don't want an interrupt handler to access the VM data structures while their internal consistency is broken.
This commit is contained in:
parent
5594f19624
commit
bf43d94a2f
1 changed files with 4 additions and 0 deletions
|
@ -39,6 +39,10 @@ Region::Region(const Range& range, NonnullRefPtr<VMObject> vmo, size_t offset_in
|
||||||
|
|
||||||
Region::~Region()
|
Region::~Region()
|
||||||
{
|
{
|
||||||
|
// Make sure we disable interrupts so we don't get interrupted between unmapping and unregistering.
|
||||||
|
// Unmapping the region will give the VM back to the RangeAllocator, so an interrupt handler would
|
||||||
|
// find the address<->region mappings in an invalid state there.
|
||||||
|
InterruptDisabler disabler;
|
||||||
if (m_page_directory) {
|
if (m_page_directory) {
|
||||||
MM.unmap_region(*this);
|
MM.unmap_region(*this);
|
||||||
ASSERT(!m_page_directory);
|
ASSERT(!m_page_directory);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue