The mbuf_queue API allows read access to integer variables which
authorbluhm <bluhm@openbsd.org>
Fri, 5 May 2023 01:19:51 +0000 (01:19 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 5 May 2023 01:19:51 +0000 (01:19 +0000)
commit16d357f8d50d8e9d96c06fec2d02ae86da153511
tree078316d4d8ee0f6d1dcbf2025d0fffda058a517c
parente253a7cc21de530da6fcf49c1279258fecade8f4
The mbuf_queue API allows read access to integer variables which
another CPU may change simultaneously.  To prevent miss optimisation
by the compiler, they need the READ_ONCE() macro.  Otherwise there
could be two read operations with inconsistent values.  Writing to
integer in mq_set_maxlen() needs mutex protection.  Otherwise the
value could change within critical sections.  Again the compiler
could optimize to multiple read operations within the critical
section.  With inconsistent values, the behavior is undefined.
OK dlg@
sys/kern/uipc_mbuf.c
sys/sys/mbuf.h