untrusted comment: verify with openbsd-73-base.pub RWQS90bYzZ4XFqRS7ZmbHbOOewbjLO6Q9zv7izN7RsdOMkWL7etY7Q6aIBF0InbMluKvTTHXnq76N1mleN5tm/9w10JiXlh/7ww= OpenBSD 7.3 errata 019, October 25, 2023: A network buffer that had to be split at certain length could crash the kernel. Apply by doing: signify -Vep /etc/signify/openbsd-73-base.pub -x 019_msplit.patch.sig \ -m - | (cd /usr/src && patch -p0) And then rebuild and install a new kernel: KK=`sysctl -n kern.osversion | cut -d# -f1` cd /usr/src/sys/arch/`machine`/compile/$KK make obj make config make make install Index: sys/kern/uipc_mbuf.c =================================================================== RCS file: /cvs/src/sys/kern/uipc_mbuf.c,v diff -u -p -r1.284 uipc_mbuf.c --- sys/kern/uipc_mbuf.c 14 Aug 2022 01:58:28 -0000 1.284 +++ sys/kern/uipc_mbuf.c 20 Oct 2023 16:36:14 -0000 @@ -1080,9 +1080,7 @@ m_split(struct mbuf *m0, int len0, int w n->m_len = 0; return (n); } - if (m->m_flags & M_EXT) - goto extpacket; - if (remain > MHLEN) { + if ((m->m_flags & M_EXT) == 0 && remain > MHLEN) { /* m can't be the lead packet */ m_align(n, 0); n->m_next = m_split(m, len, wait); @@ -1094,8 +1092,7 @@ m_split(struct mbuf *m0, int len0, int w n->m_len = 0; return (n); } - } else - m_align(n, remain); + } } else if (remain == 0) { n = m->m_next; m->m_next = NULL; @@ -1104,14 +1101,13 @@ m_split(struct mbuf *m0, int len0, int w MGET(n, wait, m->m_type); if (n == NULL) return (NULL); - m_align(n, remain); } -extpacket: if (m->m_flags & M_EXT) { n->m_ext = m->m_ext; MCLADDREFERENCE(m, n); n->m_data = m->m_data + len; } else { + m_align(n, remain); memcpy(mtod(n, caddr_t), mtod(m, caddr_t) + len, remain); } n->m_len = remain;