Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/uipc_socket.c,v retrieving revision 1.115 retrieving revision 1.115.2.3 diff -u -p -r1.115 -r1.115.2.3 --- src/sys/kern/uipc_socket.c 2005/12/27 00:00:29 1.115 +++ src/sys/kern/uipc_socket.c 2005/12/31 11:34:26 1.115.2.3 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_socket.c,v 1.115 2005/12/27 00:00:29 yamt Exp $ */ +/* $NetBSD: uipc_socket.c,v 1.115.2.3 2005/12/31 11:34:26 yamt Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.115 2005/12/27 00:00:29 yamt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uipc_socket.c,v 1.115.2.3 2005/12/31 11:34:26 yamt Exp $"); #include "opt_sock_counters.h" #include "opt_sosend_loan.h" @@ -390,7 +390,7 @@ sosend_loan(struct socket *so, struct ui vaddr_t lva, va; int npgs, i, error; - if (uio->uio_segflg != UIO_USERSPACE) + if (VMSPACE_IS_KERNEL(uio->uio_vmspace)) return (0); if (iov->iov_len < (size_t) space) @@ -405,13 +405,12 @@ sosend_loan(struct socket *so, struct ui /* XXX KDASSERT */ KASSERT(npgs <= M_EXT_MAXPAGES); - KASSERT(uio->uio_lwp != NULL); lva = sokvaalloc(len, so); if (lva == 0) return 0; - error = uvm_loan(&uio->uio_lwp->l_proc->p_vmspace->vm_map, sva, len, + error = uvm_loan(&uio->uio_vmspace->vm_map, sva, len, m->m_ext.ext_pgs, UVM_LOAN_TOPAGE); if (error) { sokvafree(lva, len); @@ -934,7 +933,7 @@ int soreceive(struct socket *so, struct mbuf **paddr, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp) { - struct lwp *l; + struct lwp *l = curlwp; struct mbuf *m, **mp; int flags, len, error, s, offset, moff, type, orig_resid; const struct protosw *pr; @@ -945,7 +944,6 @@ soreceive(struct socket *so, struct mbuf mp = mp0; type = 0; orig_resid = uio->uio_resid; - l = uio->uio_lwp; if (paddr) *paddr = 0;