]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: proxy: use aligned allocations for struct proxy
authorWilly Tarreau <w@1wt.eu>
Fri, 7 Nov 2025 21:05:21 +0000 (22:05 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 7 Nov 2025 21:22:55 +0000 (22:22 +0100)
Commit fd012b6c5 ("OPTIM: proxy: move atomically access fields out of
the read-only ones") caused the proxy struct to be 64-byte aligned,
which allows the compiler to use optimizations such as AVX512 to zero
certain fields. However the struct was allocated using calloc() so it
was not necessarily aligned, causing segv on startup on compatible
machines. Let's just use ha_aligned_zalloc_typed() to allocate the
struct.

No backport is needed.

src/proxy.c

index f1ec86bd540555f2955052f81967f2f1bda03776..7bd259a97a859f0aa33a385aced626728e5a0a41 100644 (file)
@@ -1717,7 +1717,7 @@ struct proxy *alloc_new_proxy(const char *name, unsigned int cap, char **errmsg)
 {
        struct proxy *curproxy;
 
-       if ((curproxy = calloc(1, sizeof(*curproxy))) == NULL) {
+       if ((curproxy = ha_aligned_zalloc_typed(1, typeof(*curproxy))) == NULL) {
                memprintf(errmsg, "proxy '%s': out of memory", name);
                goto fail;
        }