glebius 1ea1d562a3 Once pf became not covered by a single mutex, many counters in it became
race prone. Some just gather statistics, but some are later used in
different calculations.

A real problem was the race provoked underflow of the states_cur counter
on a rule. Once it goes below zero, it wraps to UINT32_MAX. Later this
value is used in pf_state_expires() and any state created by this rule
is immediately expired.

Thus, make fields states_cur, states_tot and src_nodes of struct
pf_rule be counter(9)s.

Thanks to Dennis for providing me shell access to problematic box and
his help with reproducing, debugging and investigating the problem.

Thanks to:		Dennis Yusupoff <dyr smartspb.net>
Also reported by:	dumbbell, pgj, Rambler
Sponsored by:		Nginx, Inc.
2014-02-14 10:05:21 +00:00
..
2013-07-28 18:44:17 +00:00
2013-12-13 22:58:57 +00:00
2012-11-29 05:16:50 +00:00
2013-10-01 18:41:53 +00:00
2013-11-05 14:11:31 +00:00
2013-09-06 23:11:19 +00:00
2014-02-12 09:59:48 +00:00
2014-01-13 17:14:10 +00:00
2014-01-22 17:15:17 +00:00
2013-07-18 05:46:33 +00:00
2013-01-01 18:28:21 +00:00
2013-05-08 21:04:19 +00:00
2013-05-13 18:13:50 +00:00
2013-03-19 21:40:14 +00:00
2013-05-16 21:04:56 +00:00
2012-11-15 15:06:21 +00:00