Skip to content

Commit dd741fc

Browse files
authored
[scudo][NFC] Add a default unmap() to unmap all pages (#102234)
1 parent fde7715 commit dd741fc

File tree

11 files changed

+16
-19
lines changed

11 files changed

+16
-19
lines changed

compiler-rt/lib/scudo/standalone/combined.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,14 +1706,12 @@ class Allocator {
17061706
return;
17071707
// N.B. because RawStackDepotMap is part of RawRingBufferMap, the order
17081708
// is very important.
1709-
RB->RawStackDepotMap.unmap(RB->RawStackDepotMap.getBase(),
1710-
RB->RawStackDepotMap.getCapacity());
1709+
RB->RawStackDepotMap.unmap();
17111710
// Note that the `RB->RawRingBufferMap` is stored on the pages managed by
17121711
// itself. Take over the ownership before calling unmap() so that any
17131712
// operation along with unmap() won't touch inaccessible pages.
17141713
MemMapT RawRingBufferMap = RB->RawRingBufferMap;
1715-
RawRingBufferMap.unmap(RawRingBufferMap.getBase(),
1716-
RawRingBufferMap.getCapacity());
1714+
RawRingBufferMap.unmap();
17171715
atomic_store(&RingBufferAddress, 0, memory_order_release);
17181716
}
17191717

compiler-rt/lib/scudo/standalone/mem_map_base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ template <class Derived> class MemMapBase {
3535
DCHECK((Addr == getBase()) || (Addr + Size == getBase() + getCapacity()));
3636
invokeImpl(&Derived::unmapImpl, Addr, Size);
3737
}
38+
// A default implementation to unmap all pages.
39+
void unmap() { unmap(getBase(), getCapacity()); }
3840

3941
// This is used to remap a mapped range (either from map() or dispatched from
4042
// ReservedMemory). For example, we have reserved several pages and then we

compiler-rt/lib/scudo/standalone/primary64.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ template <typename Config> class SizeClassAllocator64 {
160160
ScopedLock ML(Region->MMLock);
161161
MemMapT MemMap = Region->MemMapInfo.MemMap;
162162
if (MemMap.isAllocated())
163-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
163+
MemMap.unmap();
164164
}
165165
*Region = {};
166166
}

compiler-rt/lib/scudo/standalone/release.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class BufferPool {
158158
DCHECK_EQ((Mask & (static_cast<uptr>(1) << Buf.BufferIndex)), 0U);
159159
Mask |= static_cast<uptr>(1) << Buf.BufferIndex;
160160
} else {
161-
Buf.MemMap.unmap(Buf.MemMap.getBase(), Buf.MemMap.getCapacity());
161+
Buf.MemMap.unmap();
162162
}
163163
}
164164

compiler-rt/lib/scudo/standalone/secondary.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ template <typename Config> static Header *getHeader(const void *Ptr) {
6565

6666
} // namespace LargeBlock
6767

68-
static inline void unmap(MemMapT &MemMap) {
69-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
70-
}
68+
static inline void unmap(MemMapT &MemMap) { MemMap.unmap(); }
7169

7270
namespace {
7371

compiler-rt/lib/scudo/standalone/tests/common_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ TEST(ScudoCommonTest, SKIP_ON_FUCHSIA(ResidentMemorySize)) {
5050
memset(P, 1, Size);
5151
EXPECT_GT(getResidentMemorySize(), OnStart + Size - Threshold);
5252

53-
MemMap.unmap(MemMap.getBase(), Size);
53+
MemMap.unmap();
5454
}
5555

5656
TEST(ScudoCommonTest, Zeros) {
@@ -69,7 +69,7 @@ TEST(ScudoCommonTest, Zeros) {
6969
MemMap.releasePagesToOS(MemMap.getBase(), Size);
7070
EXPECT_EQ(std::count(P, P + N, 0), N);
7171

72-
MemMap.unmap(MemMap.getBase(), Size);
72+
MemMap.unmap();
7373
}
7474

7575
} // namespace scudo

compiler-rt/lib/scudo/standalone/tests/map_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ TEST(ScudoMapDeathTest, MapUnmap) {
4646
scudo::uptr P = MemMap.getBase();
4747
if (P == 0U)
4848
continue;
49-
MemMap.unmap(MemMap.getBase(), Size);
49+
MemMap.unmap();
5050
memset(reinterpret_cast<void *>(P), 0xbb, Size);
5151
}
5252
},
@@ -68,7 +68,7 @@ TEST(ScudoMapDeathTest, MapWithGuardUnmap) {
6868
ASSERT_TRUE(MemMap.remap(Q, Size, MappingName));
6969
memset(reinterpret_cast<void *>(Q), 0xaa, Size);
7070
EXPECT_DEATH(memset(reinterpret_cast<void *>(Q), 0xaa, Size + 1), "");
71-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
71+
MemMap.unmap();
7272
}
7373

7474
TEST(ScudoMapTest, MapGrowUnmap) {
@@ -87,5 +87,5 @@ TEST(ScudoMapTest, MapGrowUnmap) {
8787
Q += PageSize;
8888
ASSERT_TRUE(MemMap.remap(Q, PageSize, MappingName));
8989
memset(reinterpret_cast<void *>(Q), 0xbb, PageSize);
90-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
90+
MemMap.unmap();
9191
}

compiler-rt/lib/scudo/standalone/tests/memtag_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class MemtagTest : public Test {
6363
void TearDown() override {
6464
if (Buffer) {
6565
ASSERT_TRUE(MemMap.isAllocated());
66-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
66+
MemMap.unmap();
6767
}
6868
}
6969

compiler-rt/lib/scudo/standalone/tests/strings_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ TEST(ScudoStringsTest, CapacityIncreaseFails) {
145145
scudo::MemMapT MemMap;
146146
if (MemMap.map(/*Addr=*/0U, scudo::getPageSizeCached(), "scudo:test",
147147
MAP_ALLOWNOMEM)) {
148-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
148+
MemMap.unmap();
149149
setrlimit(RLIMIT_AS, &Limit);
150150
TEST_SKIP("Limiting address space does not prevent mmap.");
151151
}

compiler-rt/lib/scudo/standalone/tests/vector_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ TEST(ScudoVectorTest, ReallocateFails) {
6262
scudo::MemMapT MemMap;
6363
if (MemMap.map(/*Addr=*/0U, scudo::getPageSizeCached(), "scudo:test",
6464
MAP_ALLOWNOMEM)) {
65-
MemMap.unmap(MemMap.getBase(), MemMap.getCapacity());
65+
MemMap.unmap();
6666
setrlimit(RLIMIT_AS, &Limit);
6767
TEST_SKIP("Limiting address space does not prevent mmap.");
6868
}

compiler-rt/lib/scudo/standalone/vector.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ template <typename T, size_t StaticNumEntries> class VectorNoCtor {
8686
}
8787
void destroy() {
8888
if (Data != &LocalData[0])
89-
ExternalBuffer.unmap(ExternalBuffer.getBase(),
90-
ExternalBuffer.getCapacity());
89+
ExternalBuffer.unmap();
9190
}
9291

9392
private:

0 commit comments

Comments
 (0)