diff --git a/sys/kern/waitchannel.c b/sys/kern/waitchannel.c index 941751b..1d50547 100644 --- a/sys/kern/waitchannel.c +++ b/sys/kern/waitchannel.c @@ -92,9 +92,11 @@ WaitChannel_Wake(WaitChannel *wchan) Spinlock_Lock(&wchan->lock); thr = TAILQ_FIRST(&wchan->chanQueue); - TAILQ_REMOVE(&wchan->chanQueue, thr, chanQueue); - Sched_SetRunnable(thr); - Thread_Release(thr); + if (thr != NULL) { + TAILQ_REMOVE(&wchan->chanQueue, thr, chanQueue); + Sched_SetRunnable(thr); + Thread_Release(thr); + } Spinlock_Unlock(&wchan->lock); }