From 348f9fa557ebcbf86fa8d0058e78bf2f12aa925a Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Sat, 6 Oct 2018 15:36:03 -0400 Subject: [PATCH] add configuration for frequency of guard slabs --- config.h | 2 +- malloc.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config.h b/config.h index 37d8633..bd6aa0e 100644 --- a/config.h +++ b/config.h @@ -3,11 +3,11 @@ #include -#define GUARD_SLABS true #define WRITE_AFTER_FREE_CHECK true #define SLOT_RANDOMIZE true #define ZERO_ON_FREE true #define SLAB_CANARY true +#define GUARD_SLABS_INTERVAL 1 #define GUARD_SIZE_DIVISOR 2 #endif diff --git a/malloc.c b/malloc.c index 090ddd4..2fd9aa8 100644 --- a/malloc.c +++ b/malloc.c @@ -141,6 +141,7 @@ static struct size_class { struct random_state rng; size_t metadata_allocated; size_t metadata_count; + size_t metadata_count_unguarded; } __attribute__((aligned(CACHELINE_SIZE))) size_class_metadata[N_SIZE_CLASSES]; static const size_t class_region_size = 128ULL * 1024 * 1024 * 1024; @@ -180,8 +181,10 @@ static struct slab_metadata *alloc_metadata(struct size_class *c, size_t slab_si return NULL; } c->metadata_count++; - if (GUARD_SLABS) { + c->metadata_count_unguarded++; + if (c->metadata_count_unguarded >= GUARD_SLABS_INTERVAL) { c->metadata_count++; + c->metadata_count_unguarded = 0; } return metadata; }