svn commit: r257710 - head/sys/netpfil/pf

Gleb Smirnoff glebius at FreeBSD.org
Tue Nov 5 16:54:26 UTC 2013


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,


More information about the svn-src-all mailing list