Index: uipc_socket.c =================================================================== RCS file: /usr/cvs/src/sys/kern/uipc_socket.c,v retrieving revision 1.293 diff -u -r1.293 uipc_socket.c --- uipc_socket.c 26 Feb 2007 10:45:21 -0000 1.293 +++ uipc_socket.c 26 Feb 2007 18:24:03 -0000 @@ -863,20 +863,11 @@ if (resid >= MINCLSIZE) { #ifdef ZERO_COPY_SOCKETS if (top == NULL) { - MGETHDR(m, M_TRYWAIT, MT_DATA); - if (m == NULL) { - error = ENOBUFS; - goto out; - } + m = m_gethdr(M_TRYWAIT, MT_DATA); m->m_pkthdr.len = 0; m->m_pkthdr.rcvif = NULL; - } else { - MGET(m, M_TRYWAIT, MT_DATA); - if (m == NULL) { - error = ENOBUFS; - goto out; - } - } + } else + m = m_get(M_TRYWAIT, MT_DATA); if (so_zero_copy_send && resid>=PAGE_SIZE && *space>=PAGE_SIZE && @@ -887,14 +878,8 @@ len = cow_send; } if (!cow_send) { - MCLGET(m, M_TRYWAIT); - if ((m->m_flags & M_EXT) == 0) { - m_free(m); - m = NULL; - } else { - len = min(min(MCLBYTES, resid), - *space); - } + m_clget(m, M_TRYWAIT); + len = min(min(MCLBYTES, resid), *space); } #else /* ZERO_COPY_SOCKETS */ if (top == NULL) {