MINOR: task: put barriers after each write to curr_task

This one may be watched by signal handlers, we don't want the compiler
to optimize its assignment away at the end of the loop and leave some
wandering pointers there.
This commit is contained in:
Willy Tarreau 2019-05-17 11:46:04 +02:00
parent 38171daf21
commit 01f3489752

View File

@ -385,6 +385,7 @@ void process_runnable_tasks()
} }
curr_task = (struct task *)t; curr_task = (struct task *)t;
__ha_barrier_store();
if (likely(process == process_stream)) if (likely(process == process_stream))
t = process_stream(t, ctx, state); t = process_stream(t, ctx, state);
else if (process != NULL) else if (process != NULL)
@ -392,6 +393,7 @@ void process_runnable_tasks()
else { else {
__task_free(t); __task_free(t);
curr_task = NULL; curr_task = NULL;
__ha_barrier_store();
/* We don't want max_processed to be decremented if /* We don't want max_processed to be decremented if
* we're just freeing a destroyed task, we should only * we're just freeing a destroyed task, we should only
* do so if we really ran a task. * do so if we really ran a task.
@ -399,6 +401,7 @@ void process_runnable_tasks()
continue; continue;
} }
curr_task = NULL; curr_task = NULL;
__ha_barrier_store();
/* If there is a pending state we have to wake up the task /* If there is a pending state we have to wake up the task
* immediately, else we defer it into wait queue * immediately, else we defer it into wait queue
*/ */