Do not enter epoch section recursively.

A pfil hook is already invoked in NET_EPOCH section.
This commit is contained in:
Andrey V. Elsukov 2019-03-20 10:11:21 +00:00
parent e0b7b6d465
commit b8c431f9c0

View File

@ -1514,7 +1514,6 @@ int
ipfw_nat64lsn(struct ip_fw_chain *ch, struct ip_fw_args *args, ipfw_nat64lsn(struct ip_fw_chain *ch, struct ip_fw_args *args,
ipfw_insn *cmd, int *done) ipfw_insn *cmd, int *done)
{ {
struct epoch_tracker et;
struct nat64lsn_cfg *cfg; struct nat64lsn_cfg *cfg;
ipfw_insn *icmd; ipfw_insn *icmd;
int ret; int ret;
@ -1531,7 +1530,6 @@ ipfw_nat64lsn(struct ip_fw_chain *ch, struct ip_fw_args *args,
*done = 1; /* terminate the search */ *done = 1; /* terminate the search */
NAT64LSN_EPOCH_ENTER(et);
switch (args->f_id.addr_type) { switch (args->f_id.addr_type) {
case 4: case 4:
ret = nat64lsn_translate4(cfg, &args->f_id, &args->m); ret = nat64lsn_translate4(cfg, &args->f_id, &args->m);
@ -1551,7 +1549,6 @@ ipfw_nat64lsn(struct ip_fw_chain *ch, struct ip_fw_args *args,
default: default:
ret = cfg->nomatch_verdict; ret = cfg->nomatch_verdict;
} }
NAT64LSN_EPOCH_EXIT(et);
if (ret != IP_FW_PASS && args->m != NULL) { if (ret != IP_FW_PASS && args->m != NULL) {
m_freem(args->m); m_freem(args->m);