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.
This commit is contained in:
Olivier Houchard 2019-04-18 14:12:51 +02:00 committed by Olivier Houchard
parent d83b6c1ab3
commit ed1a6a0d8a

View File

@ -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);