1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 05:27:43 +00:00

Kernel: Add some InodeVMObject type assertions in Region::clone()

Let's make sure that we're never cloning shared inode-backed objects
as if they were private, and vice versa.
This commit is contained in:
Andreas Kling 2020-03-01 11:08:28 +01:00
parent 88b334135b
commit 48bbfe51fb
4 changed files with 12 additions and 0 deletions

View file

@ -71,6 +71,9 @@ NonnullOwnPtr<Region> Region::clone()
#ifdef MM_DEBUG
dbg() << "Region::clone(): Sharing " << name() << " (" << vaddr() << ")";
#endif
if (vmobject().is_inode())
ASSERT(vmobject().is_shared_inode());
// Create a new region backed by the same VMObject.
auto region = Region::create_user_accessible(m_range, m_vmobject, m_offset_in_vmobject, m_name, m_access);
region->set_mmap(m_mmap);
@ -78,6 +81,9 @@ NonnullOwnPtr<Region> Region::clone()
return region;
}
if (vmobject().is_inode())
ASSERT(vmobject().is_private_inode());
#ifdef MM_DEBUG
dbg() << "Region::clone(): CoWing " << name() << " (" << vaddr() << ")";
#endif