commit 991560fb499afcbd7717f86edd475338c7d8d2b8 (tree)
parent f4e3631655c93ba31b768b7d232a305419c0fe67
Author: Pat Tullmann <pat.github@tullmann.org>
Date: Tue, 8 Apr 2025 14:03:31 -0700
linux.zig: epoll_wait: pass kernel sigset size
Linux kernel syscalls expect to be given the number of bits of sigset that
they're built for, not the full 1024-bit sigsets that glibc supports.
I audited the other syscalls in here that use `sigset_t` and they're all
using `NSIG / 8`.
Fixes #12715
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
@@ -2242,7 +2242,7 @@ pub fn epoll_pwait(epoll_fd: i32, events: [*]epoll_event, maxevents: u32, timeou
@as(usize, @intCast(maxevents)),
@as(usize, @bitCast(@as(isize, timeout))),
@intFromPtr(sigmask),
- @sizeOf(sigset_t),
+ NSIG / 8,
);
}