Index: nfsclient/nfs_socket.c =================================================================== RCS file: /home/ncvs/src/sys/nfsclient/nfs_socket.c,v retrieving revision 1.98 diff -u -r1.98 nfs_socket.c --- nfsclient/nfs_socket.c 13 May 2003 20:36:01 -0000 1.98 +++ nfsclient/nfs_socket.c 29 Aug 2003 19:40:10 -0000 @@ -888,6 +888,11 @@ */ if (nmp->nm_sotype == SOCK_STREAM) { M_PREPEND(m, NFSX_UNSIGNED, M_TRYWAIT); + if (m == NULL) { + free(rep, M_NFSREQ); + m_freem(mrest); + return (ENOBUFS); + } *mtod(m, u_int32_t *) = htonl(0x80000000 | (m->m_pkthdr.len - NFSX_UNSIGNED)); } Index: nfsserver/nfs_syscalls.c =================================================================== RCS file: /home/ncvs/src/sys/nfsserver/nfs_syscalls.c,v retrieving revision 1.91 diff -u -r1.91 nfs_syscalls.c --- nfsserver/nfs_syscalls.c 2 Jul 2003 08:08:32 -0000 1.91 +++ nfsserver/nfs_syscalls.c 29 Aug 2003 20:30:56 -0000 @@ -470,17 +470,26 @@ * For stream protocols, prepend a Sun RPC * Record Mark. */ + error = 0; if (sotype == SOCK_STREAM) { M_PREPEND(m, NFSX_UNSIGNED, M_TRYWAIT); - *mtod(m, u_int32_t *) = htonl(0x80000000 | siz); + if (m == NULL) + error = ENOBUFS; + else + *mtod(m, u_int32_t *) = + htonl(0x80000000 | siz); } - if (slp->ns_so->so_proto->pr_flags & PR_CONNREQUIRED) - (void) nfs_slplock(slp, 1); - if (slp->ns_flag & SLP_VALID) - error = nfsrv_send(slp->ns_so, nd->nd_nam2, m); - else { - error = EPIPE; - m_freem(m); + if (error == 0) { + if (slp->ns_so->so_proto->pr_flags & + PR_CONNREQUIRED) + (void) nfs_slplock(slp, 1); + if (slp->ns_flag & SLP_VALID) + error = nfsrv_send(slp->ns_so, + nd->nd_nam2, m); + else { + error = EPIPE; + m_freem(m); + } } if (nd->nd_nam2) FREE(nd->nd_nam2, M_SONAME);