aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>2024-03-01 11:07:23 -0500
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>2024-03-01 20:32:11 -0500
commitbb1552e22bbfc2e3fee6674d2457d9407b83028b (patch)
treeb66628f66e7c2064544862f8a3551d6a2fae5c70
parentc7ec94e0604b81dc6b0832f9c67876961cfcefe2 (diff)
downloadlibrseq-bb1552e22bbfc2e3fee6674d2457d9407b83028b.tar.gz
Skip first pool
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Change-Id: If07b9bbe91fa24b805d7943d4c0cb448cc89c210
-rw-r--r--src/rseq-percpu-alloc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/rseq-percpu-alloc.c b/src/rseq-percpu-alloc.c
index 2476e11..539c14b 100644
--- a/src/rseq-percpu-alloc.c
+++ b/src/rseq-percpu-alloc.c
@@ -60,6 +60,12 @@
# define POOL_SET_MIN_ENTRY 2 /* Smallest item_len=4 */
#endif
+/*
+ * Skip pool index 0 to ensure allocated entries at index 0 do not match
+ * a NULL pointer.
+ */
+#define FIRST_POOL 1
+
struct free_list_node;
struct free_list_node {
@@ -208,7 +214,7 @@ struct rseq_percpu_pool *rseq_percpu_pool_create(size_t item_len,
pthread_mutex_lock(&pool_lock);
/* Linear scan in array of pools to find empty spot. */
- for (i = 0; i < MAX_NR_POOLS; i++) {
+ for (i = FIRST_POOL; i < MAX_NR_POOLS; i++) {
pool = &rseq_percpu_pool[i];
if (!pool->base)
goto found_empty;