From 257eddc9d50267e99cea41b0a8768634eeab7648 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 20 Apr 2024 15:47:00 -0300 Subject: [PATCH] poll: fix deadlock --- kernel-src/io/poll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel-src/io/poll.c b/kernel-src/io/poll.c index 7ebff1e4..6b941299 100644 --- a/kernel-src/io/poll.c +++ b/kernel-src/io/poll.c @@ -140,12 +140,12 @@ void poll_event(pollheader_t *header, int events) { spinlock_acquire(&desc->eventlock); int revents = iterator->events & events; - if (spinlock_try(&desc->lock) == false || spinlock_try(&desc->wakeuplock) == false) { + if (revents == 0 || spinlock_try(&desc->lock) == false || spinlock_try(&desc->wakeuplock) == false) { removefromlist(&pending, iterator); insertinheader(header, iterator); } - if (revents && desc->event == NULL) { + if (desc->event == NULL) { iterator->revents = revents; desc->event = iterator; }