aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/netpfil/pf/pf.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
index f2e19693b863..11d37747b3a0 100644
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -1477,11 +1477,13 @@ keyattach:
s->timeout = PFTM_UNLINKED;
PF_HASHROW_UNLOCK(ih);
KEYS_UNLOCK();
- uma_zfree(V_pf_state_key_z, skw);
- if (skw != sks)
- uma_zfree(V_pf_state_key_z, sks);
- if (idx == PF_SK_STACK)
+ if (idx == PF_SK_WIRE) {
+ uma_zfree(V_pf_state_key_z, skw);
+ if (skw != sks)
+ uma_zfree(V_pf_state_key_z, sks);
+ } else {
pf_detach_state(s);
+ }
return (EEXIST); /* collision! */
}
}