Check for mbuf copy failure when there are multiple multicast sockets

This partitular case is the only path where the mbuf could be NULL.
udp_append() checked for a NULL mbuf only after invoking the tunneling
callback. Our only in tree tunneling callback - SCTP - assumed a non
NULL mbuf, and it is a bit odd to make the callbacks responsible for
checking this condition.

This also reduces the differences between the IPv4 and IPv6 code.

MFC after:	1 month
This commit is contained in:
Bryan Venteicher 2014-10-09 05:17:47 +00:00
parent 1298fd9af4
commit c19f98eb74
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=272797

View File

@ -316,9 +316,6 @@ udp_append(struct inpcb *inp, struct ip *ip, struct mbuf *n, int off,
return;
}
if (n == NULL)
return;
off += sizeof(struct udphdr);
#ifdef IPSEC
@ -578,8 +575,10 @@ udp_input(struct mbuf **mp, int *offp, int proto)
if (last != NULL) {
struct mbuf *n;
n = m_copy(m, 0, M_COPYALL);
udp_append(last, ip, n, iphlen, &udp_in);
if ((n = m_copy(m, 0, M_COPYALL)) != NULL) {
udp_append(last, ip, n, iphlen,
&udp_in);
}
INP_RUNLOCK(last);
}
last = inp;