From ebd9efa85052fc19d8296e8e0f4da079da9cab45 Mon Sep 17 00:00:00 2001 From: Techatrix Date: Thu, 18 Jul 2024 22:44:36 +0200 Subject: [PATCH] fix fanotify_mark on 32-bit --- lib/std/os/linux.zig | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index a5d90c5cc3..1dcb1c286e 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -712,14 +712,27 @@ pub fn fanotify_mark( dirfd: fd_t, pathname: ?[*:0]const u8, ) usize { - return syscall5( - .fanotify_mark, - @bitCast(@as(isize, fd)), - @as(u32, @bitCast(flags)), - @bitCast(mask), - @bitCast(@as(isize, dirfd)), - @intFromPtr(pathname), - ); + if (usize_bits < 64) { + const mask_halves = splitValue64(@bitCast(mask)); + return syscall6( + .fanotify_mark, + @bitCast(@as(isize, fd)), + @as(u32, @bitCast(flags)), + mask_halves[0], + mask_halves[1], + @bitCast(@as(isize, dirfd)), + @intFromPtr(pathname), + ); + } else { + return syscall5( + .fanotify_mark, + @bitCast(@as(isize, fd)), + @as(u32, @bitCast(flags)), + @bitCast(mask), + @bitCast(@as(isize, dirfd)), + @intFromPtr(pathname), + ); + } } pub fn name_to_handle_at(