diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -491,7 +491,6 @@ break; } } - m_freem(m); if (appends == 0) { /* @@ -505,6 +504,7 @@ else UDPSTAT_INC(udps_noportbcast); } + m_freem(m); return (IPPROTO_DONE); } @@ -637,7 +637,7 @@ if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr)) || in_broadcast(ip->ip_dst, ifp)) - return (udp_multi_input(m, proto, udp_in)); + return (udp_multi_input(m, proto, udp_in)); pcbinfo = udp_get_inpcbinfo(proto);