]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: proxy: use aligned allocations for struct proxy_per_tgroup
authorWilly Tarreau <w@1wt.eu>
Fri, 7 Nov 2025 21:10:45 +0000 (22:10 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 7 Nov 2025 21:22:55 +0000 (22:22 +0100)
In 3.2, commit f879b9a18 ("MINOR: proxies: Add a per-thread group field
to struct proxy") introduced struct proxy_per_tgroup that is declared as
thread_aligned, but is allocated using calloc(). Thus it is at risk of
crashing on machines using instructions requiring 64-byte alignment such
as AVX512. Let's use ha_aligned_zalloc_typed() instead of malloc().

For 3.2, we don't have aligned allocations, so instead the THREAD_ALIGNED()
will have to be removed from the struct definition. Alternately, we could
manually align it as is done for fdtab.

src/proxy.c

index 7bd259a97a859f0aa33a385aced626728e5a0a41..429f4b11028200c756087783fc5b1f770b6bebce 100644 (file)
@@ -1507,7 +1507,7 @@ int proxy_init_per_thr(struct proxy *px)
 {
        int i;
 
-       px->per_tgrp = calloc(global.nbtgroups, sizeof(*px->per_tgrp));
+       px->per_tgrp = ha_aligned_zalloc_typed(global.nbtgroups, typeof(*px->per_tgrp));
        for (i = 0; i < global.nbtgroups; i++)
                queue_init(&px->per_tgrp[i].queue, px, NULL);