Rework route_input() and rtm_sendup(). While we perform foreach loop
authormvs <mvs@openbsd.org>
Sat, 27 Feb 2021 11:44:48 +0000 (11:44 +0000)
committermvs <mvs@openbsd.org>
Sat, 27 Feb 2021 11:44:48 +0000 (11:44 +0000)
commit2c72368d532637917c434225c2bf0090d2c46ddc
tree331999a5dce40f2024a5b821a3e7ad887af989f9
parente0daf9a73f3413afdf1a2363964e4201a638049c
Rework route_input() and rtm_sendup(). While we perform foreach loop
in route_input() we drop solock() after we checked socket state. We
pass mbuf(9) to this socket at next loops, while it referenced as
`last'. Socket's state could be changed by concurrent thread while
it's not locked.

Since we perform socket's checks and output in same iteration, the
logic which prevents mbuf(9) chain copy for the last socket in list
was removed.

ok bluhm@ claudio@
sys/net/rtsock.c