poll: fix ppoll signal masking

This commit is contained in:
Matheus
2026-06-03 20:07:50 -03:00
parent 0f8b1ac5a6
commit 2f27f20b1a
+6 -1
View File
@@ -134,10 +134,15 @@ syscallret_t syscall_ppoll(context_t *context, pollfd_t *fds, size_t nfds, times
return ret;
signal_changemask(current_thread(), SIG_SETMASK, &sigset, &savedset);
signal_returnmask(current_thread(), &savedset);
}
syscallret_t ret = syscall_poll(context, fds, nfds, utimeout ? (timeout.s * 1000 + timeout.ns / 1000000) : -1);
if (usigset) {
if (ret.errno == EINTR)
signal_returnmask(current_thread(), &savedset);
else
signal_changemask(current_thread(), SIG_SETMASK, &savedset, NULL);
}
return ret;
}