Introduce `rtlabel_mtx' mutex(9) to protect route labels storage. This
authormvs <mvs@openbsd.org>
Wed, 26 Apr 2023 19:54:35 +0000 (19:54 +0000)
committermvs <mvs@openbsd.org>
Wed, 26 Apr 2023 19:54:35 +0000 (19:54 +0000)
commitb46ef14d0f90f345b5e0d02eb410767017a09f42
tree6c08af056c16f81b65162356cace1ec2c00f7a42
parentcdae8c1b3e99d6a3613c74bba41acb47e76b4f18
Introduce `rtlabel_mtx' mutex(9) to protect route labels storage. This
time kernel and net locks are held in various combination to protect it.
We don't want to put kernel lock to all the places. Netlock also can't
be used  because rtfree(9) which calls rtlabel_unref() has unknown
netlock state within.

This new `rtlabel_mtx' mutex(9) protects `rt_labels' list and `label'
entry dereference. Since we don't export 'rt_label' structure, keep this
lock private to net/route.c. For this reason rtlabel_id2name() now
copies label string to externally passed buffer instead of returning
address of `rt_labels' list data. This is the way which rtlabel_id2sa()
already works.

ok bluhm@
sys/net/if.c
sys/net/pf_ioctl.c
sys/net/route.c
sys/net/route.h