BUG/MEDIUM: tasks: Use the MT macros in tasklet_free().
In tasklet_free(), to attempt to remove ourself, use MT_LIST_DEL, we can't
just use LIST_DEL(), as we theorically could be in the shared tasklet list.
This should be backported to 2.1.
diff --git a/include/proto/task.h b/include/proto/task.h
index f3cc3eb..3f1d2ad 100644
--- a/include/proto/task.h
+++ b/include/proto/task.h
@@ -397,10 +397,8 @@
/* Should only be called by the thread responsible for the tasklet */
static inline void tasklet_free(struct tasklet *tl)
{
- if (!LIST_ISEMPTY(&tl->list)) {
- LIST_DEL(&tl->list);
+ if (MT_LIST_DEL((struct mt_list *)&tl->list))
_HA_ATOMIC_SUB(&tasks_run_queue, 1);
- }
pool_free(pool_head_tasklet, tl);
if (unlikely(stopping))