mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-11 03:31:36 +00:00
BUG/MEDIUM: list: fix LIST_POP_LOCKED's removal of the last pointer
There was a typo making the last updated pointer be the pre-last element's
prev instead of the last's prev element. It didn't show up during early
tests because the contention is very rare on this one and it's implicitly
recovered when updating the pointers to go to the next element, but it was
clearly visible in the listener_accept() tests by having all threads block
on LIST_POP_LOCKED() with n==p==LLIST_BUSY.
This will have to be backported if commit a8434ec14
("MINOR: lists:
Implement locked variations.") is backported.
This commit is contained in:
parent
bd20ad5874
commit
285192564d
@ -292,7 +292,7 @@ struct cond_wordlist {
|
||||
__ha_barrier_store(); \
|
||||
continue; \
|
||||
} \
|
||||
p2 = HA_ATOMIC_XCHG(&n2->p, LLIST_BUSY); \
|
||||
p2 = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY); \
|
||||
if (p2 == LLIST_BUSY) { \
|
||||
n->n = n2; \
|
||||
n->p = p; \
|
||||
|
Loading…
Reference in New Issue
Block a user