On 11/8/18 1:22 PM, Andy Lutomirski wrote: >> +struct cet_kernel_state { >> + u64 kernel_ssp; /* kernel shadow stack */ >> + u64 pl1_ssp; /* ring-1 shadow stack */ >> + u64 pl2_ssp; /* ring-2 shadow stack */ >> +} __packed; >> + > Why are these __packed? It seems like it'll generate bad code for no > obvious purpose. It's a hardware-defined in-memory structure. Granted, we'd need a really wonky compiler to make that anything *other* than a nicely-packed 24-byte structure, but the __packed makes it explicit. It is probably a really useful long-term thing to stop using __packed and start using "__hw_defined" or something that #defines down to __packed.