Mark Patruck reported the following assertion:
splassert: pool_put: want 5 have 7
Starting stack trace...
pool_put() at pool_put+0x4e
pf_pkt_unlink_state_key() at pf_pkt_unlink_state_key+0x15
m_free() at m_free+0xa0
m_freem() at m_freem+0x19
vmxnet3_txintr() at vmxnet3_txintr+0x9c
vmxnet3_intr() at vmxnet3_intr+0x70
intr_handler() at intr_handler+0x28
Xintr_ioapic_level7() at Xintr_ioapic_level7+0xcd
--- interrupt ---
acpicpu_idle() at acpicpu_idle+0xcb
cpu_idle_cycle() at cpu_idle_cycle+0x10
end trace frame: 0x0, count: 247
End of stack trace.
Since state keys can be pool_put(9)'d in interrupt handlers the correct
IPL should be IPL_NET.
ok?
Index: net/pf_ioctl.c
===================================================================
RCS file: /cvs/src/sys/net/pf_ioctl.c,v
retrieving revision 1.305
diff -u -p -r1.305 pf_ioctl.c
--- net/pf_ioctl.c 16 Nov 2016 08:46:05 -0000 1.305
+++ net/pf_ioctl.c 11 Jan 2017 17:24:26 -0000
@@ -155,7 +155,7 @@ pfattach(int num)
pool_init(&pf_state_pl, sizeof(struct pf_state), 0,
IPL_SOFTNET, 0, "pfstate", NULL);
pool_init(&pf_state_key_pl, sizeof(struct pf_state_key), 0,
- IPL_SOFTNET, 0, "pfstkey", NULL);
+ IPL_NET, 0, "pfstkey", NULL);
pool_init(&pf_state_item_pl, sizeof(struct pf_state_item), 0,
IPL_SOFTNET, 0, "pfstitem", NULL);
pool_init(&pf_rule_item_pl, sizeof(struct pf_rule_item), 0,