BUG/MEDIUM: lists: Properly handle the case we're removing the first elt.

In LIST_DEL_LOCKED(), initialize p2 to NULL, and only attempt to set it back
to its previous value if we had a previous element, and thus p2 is non-NULL.
diff --git a/include/common/mini-clist.h b/include/common/mini-clist.h
index fa5df87..0822828 100644
--- a/include/common/mini-clist.h
+++ b/include/common/mini-clist.h
@@ -226,7 +226,7 @@
 	do {                                                               \
 		while (1) {                                                \
 			struct list *n, *n2;                               \
-			struct list *p, *p2;                               \
+			struct list *p, *p2 = NULL;                        \
 			n = HA_ATOMIC_XCHG(&(el)->n, LLIST_BUSY);          \
 			if (n == LLIST_BUSY)                               \
 			        continue;                                  \
@@ -248,7 +248,8 @@
 			if (n != (el)) {                                   \
 			        n2 = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);    \
 				if (n2 == LLIST_BUSY) {                    \
-					p2->n = (el);                      \
+					if (p2 != NULL)                    \
+						p2->n = (el);              \
 					(el)->p = p;                       \
 					(el)->n = n;                       \
 					__ha_barrier_store();              \