Date: Tue, 5 Nov 2013 16:54:26 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r257710 - head/sys/netpfil/pf Message-ID: <201311051654.rA5GsQbU053382@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Tue Nov 5 16:54:25 2013 New Revision: 257710 URL: http://svnweb.freebsd.org/changeset/base/257710 Log: Fix fallout from r257223. Since pf_test_state_icmp() can call pf_icmp_state_lookup() twice, we need to unlock previously found state. Reported & tested by: gavin Modified: head/sys/netpfil/pf/pf.c Modified: head/sys/netpfil/pf/pf.c ============================================================================== --- head/sys/netpfil/pf/pf.c Tue Nov 5 15:57:24 2013 (r257709) +++ head/sys/netpfil/pf/pf.c Tue Nov 5 16:54:25 2013 (r257710) @@ -4607,6 +4607,8 @@ pf_test_state_icmp(struct pf_state **sta if (ret >= 0) { if (ret == PF_DROP && pd->af == AF_INET6 && icmp_dir == PF_OUT) { + if (*state) + PF_STATE_UNLOCK(*state); ret = pf_icmp_state_lookup(&key, pd, state, m, direction, kif, virtual_id, virtual_type, icmp_dir, &iidx, multi); @@ -5058,6 +5060,8 @@ pf_test_state_icmp(struct pf_state **sta if (ret >= 0) { if (ret == PF_DROP && pd->af == AF_INET6 && icmp_dir == PF_OUT) { + if (*state) + PF_STATE_UNLOCK(*state); ret = pf_icmp_state_lookup(&key, pd, state, m, direction, kif, virtual_id, virtual_type,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311051654.rA5GsQbU053382>