Skip to content

Commit 191c162

Browse files
committed
[NFC][asan] Extract FillChunk
1 parent 735bcc9 commit 191c162

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

compiler-rt/lib/asan/asan_allocator.cpp

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -192,25 +192,28 @@ class LargeChunkHeader {
192192
}
193193
};
194194

195+
static void FillChunk(AsanChunk *m) {
196+
Flags &fl = *flags();
197+
198+
if (fl.max_free_fill_size > 0) {
199+
// We have to skip the chunk header, it contains free_context_id.
200+
uptr scribble_start = (uptr)m + kChunkHeaderSize + kChunkHeader2Size;
201+
if (m->UsedSize() >= kChunkHeader2Size) { // Skip Header2 in user area.
202+
uptr size_to_fill = m->UsedSize() - kChunkHeader2Size;
203+
size_to_fill = Min(size_to_fill, (uptr)fl.max_free_fill_size);
204+
REAL(memset)((void *)scribble_start, fl.free_fill_byte, size_to_fill);
205+
}
206+
}
207+
}
208+
195209
struct QuarantineCallback {
196210
QuarantineCallback(AllocatorCache *cache, BufferedStackTrace *stack)
197211
: cache_(cache),
198212
stack_(stack) {
199213
}
200214

201215
void PreQuarantine(AsanChunk *m) {
202-
Flags &fl = *flags();
203-
204-
if (fl.max_free_fill_size > 0) {
205-
// We have to skip the chunk header, it contains free_context_id.
206-
uptr scribble_start = (uptr)m + kChunkHeaderSize + kChunkHeader2Size;
207-
if (m->UsedSize() >= kChunkHeader2Size) { // Skip Header2 in user area.
208-
uptr size_to_fill = m->UsedSize() - kChunkHeader2Size;
209-
size_to_fill = Min(size_to_fill, (uptr)fl.max_free_fill_size);
210-
REAL(memset)((void *)scribble_start, fl.free_fill_byte, size_to_fill);
211-
}
212-
}
213-
216+
FillChunk(m);
214217
// Poison the region.
215218
PoisonShadow(m->Beg(), RoundUpTo(m->UsedSize(), ASAN_SHADOW_GRANULARITY),
216219
kAsanHeapFreeMagic);

0 commit comments

Comments
 (0)