mirror of
https://github.com/haproxy/haproxy.git
synced 2026-06-10 01:10:47 -04:00
BUG/MEDIUM: stick-tables: properly mark stktable_data as packed
The stktable_data union is made of types of varying sizes, and depending on which types are stored in a table, some offsets might not necessarily be aligned. This results in a bus error for certain regtests (e.g. lb-services) on MIPS64. This bug may impact MIPS64, SPARC64, armv7 when accessing a 64-bit counter (e.g. bytes) and depending on how the compiler emitted the operation, and cause a trap that's emulated by the OS on RISCV (heavy cost). x86_64 and armv8 are not affected at all. Let's properly mark the struct with __attribute__((packed)) so that the compiler emits the suitable unaligned-compatible instructions when accessing the fields. This should be backported to all versions where it applies.
This commit is contained in:
parent
276cdc11e8
commit
845fb846c7
1 changed files with 1 additions and 1 deletions
|
|
@ -119,7 +119,7 @@ union stktable_data {
|
||||||
unsigned long long std_t_ull;
|
unsigned long long std_t_ull;
|
||||||
struct freq_ctr std_t_frqp;
|
struct freq_ctr std_t_frqp;
|
||||||
struct dict_entry *std_t_dict;
|
struct dict_entry *std_t_dict;
|
||||||
};
|
} __attribute__((packed));
|
||||||
|
|
||||||
/* known data types */
|
/* known data types */
|
||||||
struct stktable_data_type {
|
struct stktable_data_type {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue