From b512cfdb91aa82828a65bee1733cfa7d7e78a30a Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 14 Apr 2024 19:13:12 -0300 Subject: [PATCH] poll: fix interrupted sleep --- kernel-src/io/poll.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel-src/io/poll.c b/kernel-src/io/poll.c index f8a8c462..7ebff1e4 100644 --- a/kernel-src/io/poll.c +++ b/kernel-src/io/poll.c @@ -110,8 +110,10 @@ int poll_dowait(polldesc_t *desc, size_t ustimeout) { // in the case of sleep being interrupted, wait until poll_event has done everything (if anything) __assert(ret || spinlock_try(&desc->lock) == false); - if (ret) + if (ret == SCHED_WAKEUP_REASON_INTERRUPTED) { spinlock_acquire(&desc->wakeuplock); + ret = EINTR; + } if (ustimeout != 0 && ret != 1) { timer_remove(_cpu()->timer, &sleepentry);