diff options
author | julian <julian@FreeBSD.org> | 2002-07-02 05:33:46 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2002-07-02 05:33:46 +0000 |
commit | 141fe2d3fef9dd51e6cfd5da25fcaacb133c6a9f (patch) | |
tree | b13b99820ab537d7f1504cd043071e8a42e5660a /sys/kern/kern_condvar.c | |
parent | 905b0a04596398db00e56495cd2b729846990b39 (diff) | |
download | FreeBSD-src-141fe2d3fef9dd51e6cfd5da25fcaacb133c6a9f.zip FreeBSD-src-141fe2d3fef9dd51e6cfd5da25fcaacb133c6a9f.tar.gz |
Fix failure to correctly transition back to sleep mode.
Diffstat (limited to 'sys/kern/kern_condvar.c')
-rw-r--r-- | sys/kern/kern_condvar.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/kern_condvar.c b/sys/kern/kern_condvar.c index 78585b2..9771077 100644 --- a/sys/kern/kern_condvar.c +++ b/sys/kern/kern_condvar.c @@ -394,8 +394,10 @@ cv_timedwait(struct cv *cvp, struct mtx *mp, int timo) /* * Work around race with cv_timedwait_end similar to that * between msleep and endtsleep. + * Go back to sleep. */ td->td_flags |= TDF_TIMEOUT; + td->td_state = TDS_SLP; td->td_proc->p_stats->p_ru.ru_nivcsw++; mi_switch(); } @@ -470,8 +472,10 @@ cv_timedwait_sig(struct cv *cvp, struct mtx *mp, int timo) /* * Work around race with cv_timedwait_end similar to that * between msleep and endtsleep. + * Go back to sleep. */ td->td_flags |= TDF_TIMEOUT; + td->td_state = TDS_SLP; td->td_proc->p_stats->p_ru.ru_nivcsw++; mi_switch(); } |