summaryrefslogtreecommitdiff
path: root/Kernel/Memory/AddressSpace.cpp
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2022-01-25 15:33:48 +0200
committerIdan Horowitz <idan.horowitz@gmail.com>2022-01-26 02:37:03 +0200
commita6f0ab358ad68bd4350d31423c379d4a8c198dce (patch)
tree14989a5d62bb448eee549383fcf71508af4f72fa /Kernel/Memory/AddressSpace.cpp
parentdab73d6d23fd7ee98429a73cc262a8597416c356 (diff)
downloadserenity-a6f0ab358ad68bd4350d31423c379d4a8c198dce.zip
Kernel: Make AddressSpace::find_regions_intersecting OOM-fallible
Diffstat (limited to 'Kernel/Memory/AddressSpace.cpp')
-rw-r--r--Kernel/Memory/AddressSpace.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/Kernel/Memory/AddressSpace.cpp b/Kernel/Memory/AddressSpace.cpp
index 613842f94c..b0c8e0b66e 100644
--- a/Kernel/Memory/AddressSpace.cpp
+++ b/Kernel/Memory/AddressSpace.cpp
@@ -81,7 +81,7 @@ ErrorOr<void> AddressSpace::unmap_mmap_range(VirtualAddress addr, size_t size)
}
// Try again while checking multiple regions at a time.
- auto const& regions = find_regions_intersecting(range_to_unmap);
+ auto const& regions = TRY(find_regions_intersecting(range_to_unmap));
if (regions.is_empty())
return {};
@@ -237,7 +237,7 @@ Region* AddressSpace::find_region_containing(VirtualRange const& range)
return (*candidate)->range().contains(range) ? candidate->ptr() : nullptr;
}
-Vector<Region*> AddressSpace::find_regions_intersecting(VirtualRange const& range)
+ErrorOr<Vector<Region*>> AddressSpace::find_regions_intersecting(VirtualRange const& range)
{
Vector<Region*> regions = {};
size_t total_size_collected = 0;
@@ -250,7 +250,7 @@ Vector<Region*> AddressSpace::find_regions_intersecting(VirtualRange const& rang
for (auto iter = m_regions.begin_from((*found_region)->vaddr().get()); !iter.is_end(); ++iter) {
const auto& iter_range = (*iter)->range();
if (iter_range.base() < range.end() && iter_range.end() > range.base()) {
- regions.append(*iter);
+ TRY(regions.try_append(*iter));
total_size_collected += (*iter)->size() - iter_range.intersect(range).size();
if (total_size_collected == range.size())