BUG/MEDIUM: tasks: Make sure we modify global_tasks_mask with the rq_lock.

When modifying global_tasks_mask, make sure we hold the rq_lock, or we might
remove the bit while it has been re-set by somebody else, and we make not
be waked when needed.
diff --git a/src/task.c b/src/task.c
index 56ba69e..a9c501a 100644
--- a/src/task.c
+++ b/src/task.c
@@ -77,7 +77,7 @@
 	_HA_ATOMIC_ADD(&tasks_run_queue, 1);
 #ifdef USE_THREAD
 	if (root == &rqueue) {
-		_HA_ATOMIC_OR(&global_tasks_mask, t->thread_mask);
+		global_tasks_mask |= t->thread_mask;
 		__ha_barrier_atomic_store();
 	}
 #endif
@@ -302,8 +302,8 @@
 			if (unlikely(!grq)) {
 				grq = eb32sc_first(&rqueue, tid_bit);
 				if (!grq) {
+					global_tasks_mask &= ~tid_bit;
 					HA_SPIN_UNLOCK(TASK_RQ_LOCK, &rq_lock);
-					_HA_ATOMIC_AND(&global_tasks_mask, ~tid_bit);
 				}
 			}
 #endif
@@ -335,8 +335,8 @@
 			if (unlikely(!grq)) {
 				grq = eb32sc_first(&rqueue, tid_bit);
 				if (!grq) {
+					global_tasks_mask &= ~tid_bit;
 					HA_SPIN_UNLOCK(TASK_RQ_LOCK, &rq_lock);
-					_HA_ATOMIC_AND(&global_tasks_mask, ~tid_bit);
 				}
 			}
 		}