mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-29 23:01:03 +01:00
MINOR: chunks: Make sure trash_size is only set once.
The trash_size variable is shared by all threads, and is set by all threads, when alloc_trash_buffers() is called. To make sure it's set only once, to silence a harmless data race, use a CAS to set it, and only set it if it was 0.
This commit is contained in:
parent
1bfd6020ce
commit
1c3b83242d
@ -68,8 +68,9 @@ struct buffer *get_trash_chunk(void)
|
|||||||
*/
|
*/
|
||||||
static int alloc_trash_buffers(int bufsize)
|
static int alloc_trash_buffers(int bufsize)
|
||||||
{
|
{
|
||||||
|
int old = 0;
|
||||||
chunk_init(&trash, my_realloc2(trash.area, bufsize), bufsize);
|
chunk_init(&trash, my_realloc2(trash.area, bufsize), bufsize);
|
||||||
trash_size = bufsize;
|
HA_ATOMIC_CAS(&trash_size, &old, bufsize);
|
||||||
trash_buf1 = (char *)my_realloc2(trash_buf1, bufsize);
|
trash_buf1 = (char *)my_realloc2(trash_buf1, bufsize);
|
||||||
trash_buf2 = (char *)my_realloc2(trash_buf2, bufsize);
|
trash_buf2 = (char *)my_realloc2(trash_buf2, bufsize);
|
||||||
return trash.area && trash_buf1 && trash_buf2;
|
return trash.area && trash_buf1 && trash_buf2;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user