From b0cef35b097c89ff675e055186e71239e105eb01 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 13 Mar 2019 14:03:28 +0100 Subject: [PATCH] BUG/MEDIUM: list: fix incorrect pointer unlocking in LIST_DEL_LOCKED() Injecting on a saturated listener started to exhibit some deadlocks again between LIST_POP_LOCKED() and LIST_DEL_LOCKED(). Olivier found it was due to a leftover from a previous debugging session. This patch fixes it. This will have to be backported if the other LIST_*_LOCKED() patches are backported. --- include/common/mini-clist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/common/mini-clist.h b/include/common/mini-clist.h index 074176a20..6088c41f7 100644 --- a/include/common/mini-clist.h +++ b/include/common/mini-clist.h @@ -263,7 +263,7 @@ struct cond_wordlist { n2 = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY); \ if (n2 == LLIST_BUSY) { \ if (p2 != NULL) \ - p2->n = (el); \ + p->n = p2; \ (el)->p = p; \ (el)->n = n; \ __ha_barrier_store(); \