diff options
author | jlemon <jlemon@FreeBSD.org> | 2000-11-21 20:22:34 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2000-11-21 20:22:34 +0000 |
commit | 71439be003f7e743f32a2f7d9fe94dfbdae25a7c (patch) | |
tree | 9f916f29ab4d2f980581c1b63b57b2cfef51656e /sys/kern/sys_generic.c | |
parent | a3da3ab72cd06286d3802b38bba4ee1edd58dfb3 (diff) | |
download | FreeBSD-src-71439be003f7e743f32a2f7d9fe94dfbdae25a7c.zip FreeBSD-src-71439be003f7e743f32a2f7d9fe94dfbdae25a7c.tar.gz |
Protect p_wchan with sched_lock in selwakeup().
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r-- | sys/kern/sys_generic.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 635db71..95224c8 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -1025,6 +1025,7 @@ selwakeup(sip) sip->si_pid = 0; if (p != NULL) { s = splhigh(); + mtx_enter(&sched_lock, MTX_SPIN); if (p->p_wchan == (caddr_t)&selwait) { if (p->p_stat == SSLEEP) setrunnable(p); @@ -1032,6 +1033,7 @@ selwakeup(sip) unsleep(p); } else if (p->p_flag & P_SELECT) p->p_flag &= ~P_SELECT; + mtx_exit(&sched_lock, MTX_SPIN); splx(s); } } |