From eef8f5371104426d63c779a451fc560648d7fe42 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 4 Jun 2026 11:05:19 -0300 Subject: [PATCH] poll: explicitly set header to NULL on leave and fix being bound to a cpu after timeout --- kernel-src/io/poll.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel-src/io/poll.c b/kernel-src/io/poll.c index 3ea9d1ca..b56b261b 100644 --- a/kernel-src/io/poll.c +++ b/kernel-src/io/poll.c @@ -67,6 +67,7 @@ void poll_leave(polldesc_t *desc) { bool intstate = interrupt_set(false); spinlock_acquire(&header->lock); removefromlist(&header->data, &desc->data[i]); + desc->data[i].header = NULL; spinlock_release(&header->lock); interrupt_set(intstate); } @@ -115,7 +116,7 @@ int poll_dowait(polldesc_t *desc, size_t ustimeout) { ret = EINTR; } - if (ustimeout != 0 && ret != ETIMEDOUT) { + if (ustimeout != 0) { timer_remove(current_cpu()->timer, &sleepentry); sched_target_cpu(NULL); }