Take net lock before kernel lock.
authorbluhm <bluhm@openbsd.org>
Sat, 6 Jan 2024 10:58:45 +0000 (10:58 +0000)
committerbluhm <bluhm@openbsd.org>
Sat, 6 Jan 2024 10:58:45 +0000 (10:58 +0000)
commita61bf6f2a88e2df8799431eff1412c6579005e38
treed5f6c712f575563c9d8e099e821e9e8998f75ca5
parent667382c7a43214428c9590fa699030f09445b426
Take net lock before kernel lock.

Doing KERNEL_LOCK() just before NET_LOCK() does not make sense.
Net lock is a rwlock that releases kernel lock during sleep.  To
avoid an unnecessary release and take kernel lock cycle, move
KERNEL_LOCK() after NET_LOCK().
There is no lock order reversal deadlock issue.  Both locks are
used in any order thoughout the kernel.  As NET_LOCK() releases the
kernel lock when it cannot take the lock immediately and has to
sleep, we always end in the order kernel lock before net lock after
sleeping.

OK sashan@
sys/net/if.c
sys/netinet/in.c