mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 08:36:15 +00:00
Everywhere: Fix some alignment issues
When creating uninitialized storage for variables, we need to make sure that the alignment is correct. Fixes a KUBSAN failure when running kernels compiled with Clang. In `Syscalls/socket.cpp`, we can simply use local variables, as `sockaddr_un` is a POD type. Along with moving the `alignas` specifier to the correct member, `AK::Optional`'s internal buffer has been made non-zeroed by default. GCC emitted bogus uninitialized memory access warnings, so we now use `__builtin_launder` to tell the compiler that we know what we are doing. This might disable some optimizations, but judging by how GCC failed to notice that the memory's initialization is dependent on `m_has_value`, I'm not sure that's a bad thing.
This commit is contained in:
committed by
Ali Mohammad Pur
parent
45a82b2a5b
commit
b9f30c6f2a
@@ -614,7 +614,7 @@ private:
|
||||
|
||||
extern "C" {
|
||||
|
||||
static u8 default_streams[3][sizeof(FILE)];
|
||||
alignas(FILE) static u8 default_streams[3][sizeof(FILE)];
|
||||
FILE* stdin = reinterpret_cast<FILE*>(&default_streams[0]);
|
||||
FILE* stdout = reinterpret_cast<FILE*>(&default_streams[1]);
|
||||
FILE* stderr = reinterpret_cast<FILE*>(&default_streams[2]);
|
||||
|
||||
Reference in New Issue
Block a user