Index: sys/netgraph/ng_base.c =================================================================== --- sys/netgraph/ng_base.c (revision 216668) +++ sys/netgraph/ng_base.c (working copy) @@ -3501,10 +3501,35 @@ ng_address_hook(node_p here, item_p item, hook_p h * that the peer is still connected (even if invalid,) we know * that the peer node is present, though maybe invalid. */ - if ((hook == NULL) || - NG_HOOK_NOT_VALID(hook) || - NG_HOOK_NOT_VALID(peer = NG_HOOK_PEER(hook)) || - NG_NODE_NOT_VALID(peernode = NG_PEER_NODE(hook))) { + /* XXX-BZ ng_topo_mtx? */ +#define BZXXXPRINTF(s) \ + printf("[%s:%d] XXX-BZ %s\n", __func__, __LINE__, s) + if (hook == NULL) { + BZXXXPRINTF("hook == NULL"); + goto outahere; + } + if (NG_HOOK_NOT_VALID(hook)) { + BZXXXPRINTF("NG_HOOK_NOT_VALID(hook)"); + goto outahere; + } + peer = NG_HOOK_PEER(hook); + if (peer == NULL) { + BZXXXPRINTF("peer == NULL"); + goto outahere; + } + if (NG_HOOK_NOT_VALID(peer)) { + BZXXXPRINTF("NG_HOOK_NOT_VALID(peer)"); + goto outahere; + } + peernode = NG_PEER_NODE(hook); + if (peernode == NULL) { + BZXXXPRINTF("peernode == NULL"); + goto outahere; + } + if (NG_NODE_NOT_VALID(peernode)) { + BZXXXPRINTF("NG_HOOK_NOT_VALID(peernode)"); +#undef BZXXXPRINTF +outahere: NG_FREE_ITEM(item); TRAP_ERROR(); return (ENETDOWN);