diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2022-03-23 16:36:12 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2022-03-23 16:36:12 +0000 |
| commit | b319171861464f6c445905e7649cb43bf9bc78be (patch) | |
| tree | 15b00f88a90eae22b38490ca51ae6fd7f99bf922 | |
| parent | 0e5c72c3cc5471dfa8cb42b018d623b1ef15dbe8 (diff) | |
| -rw-r--r-- | sys/kern/kern_exit.c | 11 | ||||
| -rw-r--r-- | sys/kern/kern_time.c | 2 |
2 files changed, 5 insertions, 8 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 6d1cd5705f30..7215aed60c83 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -369,15 +369,14 @@ exit1(struct thread *td, int rval, int signo) * executing, prevent it from rearming itself and let it finish. */ if (timevalisset(&p->p_realtimer.it_value) && - _callout_stop_safe(&p->p_itcallout, CS_EXECUTING, NULL) == 0) { + callout_stop(&p->p_itcallout) == 0) { timevalclear(&p->p_realtimer.it_interval); - msleep(&p->p_itcallout, &p->p_mtx, PWAIT, "ritwait", 0); - KASSERT(!timevalisset(&p->p_realtimer.it_value), - ("realtime timer is still armed")); + PROC_UNLOCK(p); + callout_drain(&p->p_itcallout); + } else { + PROC_UNLOCK(p); } - PROC_UNLOCK(p); - if (p->p_sysent->sv_onexit != NULL) p->p_sysent->sv_onexit(p); seltdfini(td); diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c index 194a23fdc9e8..f052c4b6d698 100644 --- a/sys/kern/kern_time.c +++ b/sys/kern/kern_time.c @@ -950,8 +950,6 @@ realitexpire(void *arg) kern_psignal(p, SIGALRM); if (!timevalisset(&p->p_realtimer.it_interval)) { timevalclear(&p->p_realtimer.it_value); - if (p->p_flag & P_WEXIT) - wakeup(&p->p_itcallout); return; } |
