radix node head lock needs to be held when calling rnh_addaddr
This commit is contained in:
parent
2a8fe85d73
commit
658f51b3ec
@ -1826,7 +1826,9 @@ add_table_entry(struct ip_fw_chain *ch, uint16_t tbl, in_addr_t addr,
|
||||
ent->mask.sin_addr.s_addr = htonl(mlen ? ~((1 << (32 - mlen)) - 1) : 0);
|
||||
ent->addr.sin_addr.s_addr = addr & ent->mask.sin_addr.s_addr;
|
||||
IPFW_WLOCK(ch);
|
||||
RADIX_NODE_HEAD_LOCK(rnh);
|
||||
if (rnh->rnh_addaddr(&ent->addr, &ent->mask, rnh, (void *)ent) ==
|
||||
RADIX_NODE_HEAD_UNLOCK(rnh);
|
||||
NULL) {
|
||||
IPFW_WUNLOCK(ch);
|
||||
free(ent, M_IPFW_TBL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user