Prevent simultaneous dt(4) open.
authorbluhm <bluhm@openbsd.org>
Tue, 2 Jan 2024 16:32:47 +0000 (16:32 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 2 Jan 2024 16:32:47 +0000 (16:32 +0000)
commitc57c5c6837074019189df022447449899e61aa0a
tree1830d08731277d7be7e3b2d72a17a2ae6b089942
parentba17659fb13c8825bda5d0b0ebc92b51b9c9078c
Prevent simultaneous dt(4) open.

Syskaller has hit the assertion "dtlookup(unit) == NULL" by opening
dt(4) device in two parallel threads.  Convert kassert into if
condition.  Move check that device is not used after sleep points
in malloc.  The list dtdev_list is protected by kernel lock which
is released during sleep.

Reported-by: syzbot+6d66c21f796c817948f0@syzkaller.appspotmail.com
OK miod@
sys/conf/GENERIC
sys/conf/newvers.sh
sys/dev/dt/dt_dev.c