On Fri, Jan 06, 2017 at 12:21:19PM +0100, Martin Pieuchot wrote:
> Right now for pfsync(4), but later it will need it to serialize access
> to PF data structures.
>
> splassert: ip_output: want 1 have 0
> ip_output() at ip_output+0x7d
> pfsync_sendout() at pfsync_sendout+0x499
> pfsync_q_ins() at pfsync_q_ins+0x78
> pf_remove_state() at pf_remove_state+0x5d
> pf_purge_expired_states() at pf_purge_expired_states+0x7b
> pf_purge_thread() at pf_purge_thread+0x5c
>
> ok?
looks good to me.
ok, sashan
>
> Index: net/pf.c
> ===
> RCS file: /cvs/src/sys/net/pf.c,v
> retrieving revision 1.1009
> diff -u -p -r1.1009 pf.c
> --- net/pf.c 29 Dec 2016 13:01:48 - 1.1009
> +++ net/pf.c 6 Jan 2017 11:18:41 -
> @@ -1184,7 +1184,7 @@ pf_purge_thread(void *v)
> for (;;) {
> tsleep(pf_purge_thread, PWAIT, "pftm", 1 * hz);
>
> - s = splsoftnet();
> + NET_LOCK(s);
>
> /* process a fraction of the state table every second */
> pf_purge_expired_states(1 + (pf_status.states
> @@ -1198,7 +1198,7 @@ pf_purge_thread(void *v)
> nloops = 0;
> }
>
> - splx(s);
> + NET_UNLOCK(s);
> }
> }
>
>