mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 22:31:06 +01:00
BUILD: memory: fix free_list pointer declaration again for atomic CAS
Commit ac6c880 ("BUILD: memory: fix pointer declaration for atomic CAS")
attemtped to fix a build warning affecting the lock-free version of the
pool allocator. But the fix tried to hide the cause instead of addressing
it, thus clang still complains about (void **) not matching (void ***).
The real solution is to declare free_list (void **) and not to use a cast.
Now this builds fine with gcc/clang with and without threads.
No backport is needed.
This commit is contained in:
parent
ed72d82827
commit
7a6ad88b02
@ -267,12 +267,12 @@ static inline void *pool_alloc(struct pool_head *pool)
|
||||
*/
|
||||
static inline void __pool_free(struct pool_head *pool, void *ptr)
|
||||
{
|
||||
void *free_list = pool->free_list;
|
||||
void **free_list = pool->free_list;
|
||||
|
||||
do {
|
||||
*POOL_LINK(pool, ptr) = (void *)free_list;
|
||||
__ha_barrier_store();
|
||||
} while (!HA_ATOMIC_CAS(&pool->free_list, (void **)&free_list, ptr));
|
||||
} while (!HA_ATOMIC_CAS(&pool->free_list, &free_list, ptr));
|
||||
HA_ATOMIC_SUB(&pool->used, 1);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user