> On 8. Oct 2023, at 15:23, Andrew Doran <ad%netbsd.org@localhost> wrote: > > Module Name: src > Committed By: ad > Date: Sun Oct 8 13:23:05 UTC 2023 > > Modified Files: > src/sys/kern: kern_condvar.c kern_sleepq.c kern_timeout.c > kern_turnstile.c sys_lwp.c sys_select.c > src/sys/rump/librump/rumpkern: sleepq.c > src/sys/sys: sleepq.h syncobj.h > > Log Message: > Ensure that an LWP that has taken a legitimate wakeup never produces an > error code from sleepq_block(). Then, it's possible to make cv_signal() > work as expected and only ever wake a singular LWP. > > > To generate a diff of this commit: ... > cvs rdiff -u -r1.63 -r1.64 src/sys/kern/sys_select.c - sleepq_unsleep(l, false); + sleepq_remove(l->l_sleepq, l, true); } } mutex_spin_exit(lock); Looks like sleepq_remove() unlocks l->l_mutex == lock and then mutex_spin_exit(lock) will unlock an unlocked mutex. -- J. Hannken-Illjes - hannken%mailbox.org@localhost
Attachment:
signature.asc
Description: Message signed with OpenPGP