mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
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:
parent
38171daf21
commit
01f3489752
@ -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
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user