diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -2546,7 +2546,9 @@ ip6_pcbopt(int optname, u_char *buf, int len, struct ip6_pktopts **pktopt, struct ucred *cred, int uproto) { + struct epoch_tracker et; struct ip6_pktopts *opt; + int ret; if (*pktopt == NULL) { *pktopt = malloc(sizeof(struct ip6_pktopts), M_IP6OPT, @@ -2557,7 +2559,11 @@ } opt = *pktopt; - return (ip6_setpktopt(optname, buf, len, opt, cred, 1, 0, uproto)); + NET_EPOCH_ENTER(et); + ret = ip6_setpktopt(optname, buf, len, opt, cred, 1, 0, uproto); + NET_EPOCH_EXIT(et); + + return (ret); } #define GET_PKTOPT_VAR(field, lenexpr) do { \ @@ -2886,6 +2892,8 @@ int minmtupolicy, preftemp; int error; + NET_EPOCH_ASSERT(); + if (!sticky && !cmsg) { #ifdef DIAGNOSTIC printf("ip6_setpktopt: impossible case\n");