Don't use if_maddr_rlock() in ng_eiface(4), use epoch(9) directly instead.

This commit is contained in:
Gleb Smirnoff 2019-10-10 23:49:19 +00:00
parent 1e5db73d07
commit ebded7d547

View File

@ -506,18 +506,19 @@ ng_eiface_rcvmsg(node_p node, item_p item, hook_p lasthook)
case NGM_EIFACE_GET_IFADDRS:
{
struct epoch_tracker et;
struct ifaddr *ifa;
caddr_t ptr;
int buflen;
/* Determine size of response and allocate it */
buflen = 0;
if_addr_rlock(ifp);
NET_EPOCH_ENTER(et);
CK_STAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link)
buflen += SA_SIZE(ifa->ifa_addr);
NG_MKRESPONSE(resp, msg, buflen, M_NOWAIT);
if (resp == NULL) {
if_addr_runlock(ifp);
NET_EPOCH_EXIT(et);
error = ENOMEM;
break;
}
@ -536,7 +537,7 @@ ng_eiface_rcvmsg(node_p node, item_p item, hook_p lasthook)
ptr += len;
buflen -= len;
}
if_addr_runlock(ifp);
NET_EPOCH_EXIT(et);
break;
}