freebsd-src/sys/netpfil
Kristof Provost 301ec2cebb pf: always mark states as unlinked before detaching them
Users have reported crashes in pf_test_state_udp() where at least one state key
is NULL.

That suggests that pf_detach_state() ran concurrently with pf_test_state_udp().
pf_test_state_udp() holds the state lock (aka the id lock), but
pf_detach_state() does not.
The intent is that detached states are not returned by STATE_LOOKUP/
pf_find_state(), as the state's timeout is set to PFTM_UNLINKED and thus
pf_find_state() does not find the state.

There are other paths to pf_detach_state() (outside of pf_unlink_state())
though, where we did not set the timeout to PFTM_UNLINKED. Fix those, and assert
that the timeout is set correctly when we enter pf_detach_state().

MFC after:	1 week
See also:	https://redmine.pfsense.org/issues/15413
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D45101
2024-05-08 13:19:05 +02:00
..
ipfilter/netinet netpfil: Fix typos in source code comments 2024-04-18 16:17:10 +02:00
ipfw ipfw: Skip to the start of the loop when following a keep-state rule 2024-02-15 17:57:51 -08:00
pf pf: always mark states as unlinked before detaching them 2024-05-08 13:19:05 +02:00