rseq-mempool: Call set_alloc_slot() on all paths
authorOlivier Dion <odion@efficios.com>
Fri, 8 Mar 2024 17:29:36 +0000 (12:29 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 8 Mar 2024 19:03:48 +0000 (14:03 -0500)
set_alloc_slot() was not called when getting free slot from free-list.

Change-Id: I21d633ced6592039fe39e0ae121128958048f80e
Signed-off-by: Olivier Dion <odion@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
src/rseq-mempool.c

index dc083ed83416175b8589d6f55ba834db4d0c39bf..f85fc45e119764a5cc0bc3f5835c58f15b712b5b 100644 (file)
@@ -578,8 +578,9 @@ void __rseq_percpu *__rseq_percpu_malloc(struct rseq_percpu_pool *pool, bool zer
        item_offset = pool->ranges->next_unused;
        addr = (void *) (((uintptr_t) pool->index << POOL_INDEX_SHIFT) | item_offset);
        pool->ranges->next_unused += pool->item_len;
-       set_alloc_slot(pool, item_offset);
 end:
+       if (addr)
+               set_alloc_slot(pool, item_offset);
        pthread_mutex_unlock(&pool->lock);
        if (zeroed && addr)
                rseq_percpu_zero_item(pool, item_offset);
This page took 0.02484 seconds and 4 git commands to generate.