diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-01 12:27:28 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-01 12:27:28 +0200 |
commit | d27e1b84c58bdf493de6594c4378bbd3b0c3d996 (patch) | |
tree | f5930a2026b7497d715fef95e9d1967460014232 | |
parent | 78c0100bb21560a9ea2dc2f4176415e5cdf9b3b6 (diff) |
syscall: Fix unaligned arguments to launch() causing a kernel panic
-rw-r--r-- | src/lib/syscall.zig | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index 5ca10cf..6b94e16 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -90,8 +90,9 @@ fn consoleWrite(trap_frame: *const TrapFrame) !usize { fn launch(trap_frame: *const TrapFrame) !usize { const alignment = @alignOf(std.elf.Elf64_Ehdr); const bytes_addr = trap_frame.general_purpose_registers[10]; - const bytes_opt: ?[*]align(alignment) const u8 = @ptrFromInt(bytes_addr); - const bytes_ptr = bytes_opt orelse return Error.ZeroAddressSupplied; + const bytes_opt: ?[*]const u8 = @ptrFromInt(bytes_addr); + const bytes_noalign = bytes_opt orelse return Error.ZeroAddressSupplied; + const bytes_ptr = try std.math.alignCast(alignment, bytes_noalign); const len = trap_frame.general_purpose_registers[11]; const bytes = bytes_ptr[0..len]; |