diff options
author | Andreas Kling <kling@serenityos.org> | 2021-09-06 01:59:30 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-06 01:59:30 +0200 |
commit | 062cc804e7e97cd77fe21296a9b6ccce7e6f2198 (patch) | |
tree | 1b71828bb0f7ac82cc96c8f84b6609a3f2f6879d /Kernel/Memory/AddressSpace.cpp | |
parent | 75564b4a5f2b5452163571116ee9efaf5c3c65af (diff) | |
download | serenity-062cc804e7e97cd77fe21296a9b6ccce7e6f2198.zip |
Kernel: Use TRY() some more in Memory::AddressSpace
Diffstat (limited to 'Kernel/Memory/AddressSpace.cpp')
-rw-r--r-- | Kernel/Memory/AddressSpace.cpp | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/Kernel/Memory/AddressSpace.cpp b/Kernel/Memory/AddressSpace.cpp index 3f7d53987f..47ad3dc519 100644 --- a/Kernel/Memory/AddressSpace.cpp +++ b/Kernel/Memory/AddressSpace.cpp @@ -142,11 +142,9 @@ KResultOr<VirtualRange> AddressSpace::try_allocate_range(VirtualAddress vaddr, s KResultOr<Region*> AddressSpace::try_allocate_split_region(Region const& source_region, VirtualRange const& range, size_t offset_in_vmobject) { - auto maybe_new_region = Region::try_create_user_accessible( - range, source_region.vmobject(), offset_in_vmobject, KString::try_create(source_region.name()), source_region.access(), source_region.is_cacheable() ? Region::Cacheable::Yes : Region::Cacheable::No, source_region.is_shared()); - if (maybe_new_region.is_error()) - return maybe_new_region.error(); - auto* region = add_region(maybe_new_region.release_value()); + auto new_region = TRY(Region::try_create_user_accessible( + range, source_region.vmobject(), offset_in_vmobject, KString::try_create(source_region.name()), source_region.access(), source_region.is_cacheable() ? Region::Cacheable::Yes : Region::Cacheable::No, source_region.is_shared())); + auto* region = add_region(move(new_region)); if (!region) return ENOMEM; region->set_syscall_region(source_region.is_syscall_region()); @@ -163,14 +161,8 @@ KResultOr<Region*> AddressSpace::try_allocate_split_region(Region const& source_ KResultOr<Region*> AddressSpace::allocate_region(VirtualRange const& range, StringView name, int prot, AllocationStrategy strategy) { VERIFY(range.is_valid()); - auto maybe_vmobject = AnonymousVMObject::try_create_with_size(range.size(), strategy); - if (maybe_vmobject.is_error()) - return maybe_vmobject.error(); - auto maybe_region = Region::try_create_user_accessible(range, maybe_vmobject.release_value(), 0, KString::try_create(name), prot_to_region_access_flags(prot), Region::Cacheable::Yes, false); - if (maybe_region.is_error()) - return maybe_region.error(); - - auto region = maybe_region.release_value(); + auto vmobject = TRY(AnonymousVMObject::try_create_with_size(range.size(), strategy)); + auto region = TRY(Region::try_create_user_accessible(range, move(vmobject), 0, KString::try_create(name), prot_to_region_access_flags(prot), Region::Cacheable::Yes, false)); if (!region->map(page_directory())) return ENOMEM; auto* added_region = add_region(move(region)); @@ -196,12 +188,8 @@ KResultOr<Region*> AddressSpace::allocate_region_with_vmobject(VirtualRange cons return EINVAL; } offset_in_vmobject &= PAGE_MASK; - auto maybe_region = Region::try_create_user_accessible(range, move(vmobject), offset_in_vmobject, KString::try_create(name), prot_to_region_access_flags(prot), Region::Cacheable::Yes, shared); - if (maybe_region.is_error()) { - dbgln("allocate_region_with_vmobject: Unable to allocate Region"); - return maybe_region.error(); - } - auto* added_region = add_region(maybe_region.release_value()); + auto region = TRY(Region::try_create_user_accessible(range, move(vmobject), offset_in_vmobject, KString::try_create(name), prot_to_region_access_flags(prot), Region::Cacheable::Yes, shared)); + auto* added_region = add_region(move(region)); if (!added_region) return ENOMEM; if (!added_region->map(page_directory())) |