diff --git a/kernel-src/sys/syscalls/poll.c b/kernel-src/sys/syscalls/poll.c index 4cfa2a68..1d54184b 100644 --- a/kernel-src/sys/syscalls/poll.c +++ b/kernel-src/sys/syscalls/poll.c @@ -31,7 +31,9 @@ syscallret_t syscall_poll(context_t *, pollfd_t *fds, size_t nfds, int timeoutms memcpy(fdsbuff, fds, fdsbuffsize); polldesc_t desc = {0}; - ret.errno = poll_initdesc(&desc, nfds); + // when nfds is 0, poll is used as a sleep. + // therefore, initialize the desc size to one descriptor in that case. + ret.errno = poll_initdesc(&desc, nfds == 0 ? 1 : nfds); if (ret.errno) { goto cleanup; }