]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MINOR: pool: always align pool_heads to 64 bytes
authorWilly Tarreau <w@1wt.eu>
Wed, 2 Mar 2022 16:59:04 +0000 (17:59 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 2 Mar 2022 17:22:08 +0000 (18:22 +0100)
commite81248c0c8c543ab5065b41310e7c9685f61cc87
tree71f92d8a18900ef14359c6cd9fdb9f59d5c668b8
parent10a37360c8c5dfc4a65aba81f67ae63fe5fa2161
BUG/MINOR: pool: always align pool_heads to 64 bytes

This is the pool equivalent of commit 97ea9c49f ("BUG/MEDIUM: fd: always
align fdtab[] to 64 bytes"). After a careful code review, it happens that
the pool heads are the other structures allocated with malloc/calloc that
claim to be aligned to a size larger than what the allocator can offer.
While no issue was reported on them, no memset() is performed and no type
is large, this is a problem waiting to happen, so better fix it. In
addition, it's relatively easy to do by storing the allocation address
inside the pool_head itself and use it at free() time. Finally, threads
might benefit from the fact that the caches will really be aligned and
that there will be no false sharing.

This should be backported to all versions where it applies easily.
include/haproxy/pool-t.h
src/pool.c