From bd20ad58748eafbded464f574ed84dbbdad31e8d Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 28 Feb 2019 11:09:56 +0100 Subject: [PATCH] BUG/MEDIUM: list: fix the rollback on addq in the locked liss Commit a8434ec14 ("MINOR: lists: Implement locked variations.") introduced locked lists which use the elements pointers as locks for concurrent operations. A copy-paste typo in LIST_ADDQ_LOCKED() causes corruption in the list in case the next pointer is already held, as it restores the previous pointer into the next one. It may impact the server pools. This will have to be backported if the commit above is 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 08228283a..53db885b8 100644 --- a/include/common/mini-clist.h +++ b/include/common/mini-clist.h @@ -208,7 +208,7 @@ struct cond_wordlist { __ha_barrier_store(); \ n = HA_ATOMIC_XCHG(&p->n, LLIST_BUSY); \ if (n == LLIST_BUSY) { \ - (lh)->n = p; \ + (lh)->p = p; \ __ha_barrier_store(); \ continue; \ } \