mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-22 04:10:48 +00:00
BUG/MAJOR: memory: Don't forget to unlock the rwlock if the pool is empty.
In __pool_get_first(), don't forget to unlock the pool lock if the pool is
empty, otherwise no writer will be able to take the lock, and as it is done
when reloading, it leads to an infinite loop on reload.
This should be backported with commit 04f5fe87d3
This commit is contained in:
parent
04f5fe87d3
commit
1c7c0d6b97
@ -225,8 +225,10 @@ static inline void *__pool_get_first(struct pool_head *pool)
|
||||
HA_RWLOCK_RDLOCK(POOL_LOCK, &pool->flush_lock);
|
||||
cmp.free_list = pool->free_list;
|
||||
do {
|
||||
if (cmp.free_list == NULL)
|
||||
if (cmp.free_list == NULL) {
|
||||
HA_RWLOCK_RDUNLOCK(POOL_LOCK, &pool->flush_lock);
|
||||
return NULL;
|
||||
}
|
||||
new.seq = cmp.seq + 1;
|
||||
__ha_barrier_load();
|
||||
new.free_list = *POOL_LINK(pool, cmp.free_list);
|
||||
|
Loading…
Reference in New Issue
Block a user