From: Olivier Houchard Date: Thu, 18 Apr 2019 12:12:51 +0000 (+0200) Subject: MEDIUM: tasks: Use __ha_barrier_store after modifying global_tasks_mask. X-Git-Tag: v2.0-dev3~226 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed1a6a0d8a50f8b4b4819121de7f0eaf6927273f;p=thirdparty%2Fhaproxy.git MEDIUM: tasks: Use __ha_barrier_store after modifying global_tasks_mask. Now that we no longer use atomic operations to update global_tasks_mask, as it's always modified while holding the TASK_RQ_LOCK, we have to use __ha_barrier_store() instead of __ha_barrier_atomic_store() to ensure any modification of global_tasks_mask is seen before modifying active_tasks_mask. This should be backported to 1.9. --- diff --git a/src/task.c b/src/task.c index b4f65e892a..de6eda1e72 100644 --- a/src/task.c +++ b/src/task.c @@ -78,7 +78,7 @@ void __task_wakeup(struct task *t, struct eb_root *root) #ifdef USE_THREAD if (root == &rqueue) { global_tasks_mask |= t->thread_mask; - __ha_barrier_atomic_store(); + __ha_barrier_store(); } #endif _HA_ATOMIC_OR(&active_tasks_mask, t->thread_mask);