aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/netinet/udp_usrreq.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 5f1a1bb24aac6..81ab6e1a16ff6 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -851,15 +851,18 @@ udp_output(inp, m, addr, control, td)
goto release;
}
}
+
/*
- * Calculate data length and get a mbuf
- * for UDP and IP headers.
+ * Calculate data length and get a mbuf for UDP, IP, and possible
+ * link-layer headers.
*/
- M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT);
- if (m == 0) {
+ M_PREPEND(m, sizeof(struct udpiphdr) + max_linkhdr, M_DONTWAIT);
+ if (m == NULL) {
error = ENOBUFS;
goto release;
}
+ m->m_data += max_linkhdr;
+ m->m_len -= max_linkhdr;
/*
* Fill in mbuf with extended UDP header