From 6ea98a7bc2e89649d4bb0888eac596429a7c1576 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 19 Mar 2024 18:18:21 -0400 Subject: [PATCH] mempool: Introduce COW_ZERO poison value Signed-off-by: Mathieu Desnoyers Change-Id: Id7fdfa0ceb8631e1b4bfe594d9e68c4d8663c6ef --- src/rseq-mempool.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/rseq-mempool.c b/src/rseq-mempool.c index 4508ff4..15dd4e5 100644 --- a/src/rseq-mempool.c +++ b/src/rseq-mempool.c @@ -56,11 +56,13 @@ #define RANGE_HEADER_OFFSET sizeof(struct rseq_mempool_range) #if RSEQ_BITS_PER_LONG == 64 -# define DEFAULT_PRIVATE_POISON_VALUE 0x5555555555555555ULL +# define DEFAULT_COW_INIT_POISON_VALUE 0x5555555555555555ULL #else -# define DEFAULT_PRIVATE_POISON_VALUE 0x55555555UL +# define DEFAULT_COW_INIT_POISON_VALUE 0x55555555UL #endif +#define DEFAULT_COW_ZERO_POISON_VALUE 0x0 + struct free_list_node; struct free_list_node { @@ -952,7 +954,10 @@ struct rseq_mempool *rseq_mempool_create(const char *pool_name, attr.stride = RSEQ_MEMPOOL_STRIDE; /* Use default */ if (attr.robust_set && !attr.poison_set) { attr.poison_set = true; - attr.poison = DEFAULT_PRIVATE_POISON_VALUE; + if (attr.populate_policy != RSEQ_MEMPOOL_POPULATE_PRIVATE_ALL) + attr.poison = DEFAULT_COW_INIT_POISON_VALUE; + else + attr.poison = DEFAULT_COW_ZERO_POISON_VALUE; } if (item_len > attr.stride || attr.stride < (size_t) rseq_get_page_len() || !is_pow2(attr.stride)) { -- 2.34.1