mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 17:15:06 +00:00
Kernel: Copy "stack" and "mmap" bits when splitting a Region
This commit is contained in:
parent
c9e877a294
commit
afd2b5a53e
1 changed files with 2 additions and 0 deletions
|
@ -168,6 +168,8 @@ static unsigned prot_to_region_access_flags(int prot)
|
||||||
Region& Process::allocate_split_region(const Region& source_region, const Range& range, size_t offset_in_vmobject)
|
Region& Process::allocate_split_region(const Region& source_region, const Range& range, size_t offset_in_vmobject)
|
||||||
{
|
{
|
||||||
auto& region = add_region(Region::create_user_accessible(range, source_region.vmobject(), offset_in_vmobject, source_region.name(), source_region.access()));
|
auto& region = add_region(Region::create_user_accessible(range, source_region.vmobject(), offset_in_vmobject, source_region.name(), source_region.access()));
|
||||||
|
region.set_mmap(source_region.is_mmap());
|
||||||
|
region.set_stack(source_region.is_stack());
|
||||||
size_t page_offset_in_source_region = (offset_in_vmobject - source_region.offset_in_vmobject()) / PAGE_SIZE;
|
size_t page_offset_in_source_region = (offset_in_vmobject - source_region.offset_in_vmobject()) / PAGE_SIZE;
|
||||||
for (size_t i = 0; i < region.page_count(); ++i) {
|
for (size_t i = 0; i < region.page_count(); ++i) {
|
||||||
if (source_region.should_cow(page_offset_in_source_region + i))
|
if (source_region.should_cow(page_offset_in_source_region + i))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue