Module Name: src
Committed By: matt
Date: Wed Jun 9 18:13:46 UTC 2010
Modified Files:
src/sys/compat/netbsd32 [matt-nb5-mips64]: netbsd32_conv.h
netbsd32_socket.c
Log Message:
Fix socket passing in netbsd32 compat. unfdpasses and incoming ssh
interactive session now work.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.19.12.1 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.33 -r1.33.12.1 src/sys/compat/netbsd32/netbsd32_socket.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/compat/netbsd32/netbsd32_conv.h
diff -u src/sys/compat/netbsd32/netbsd32_conv.h:1.19 src/sys/compat/netbsd32/netbsd32_conv.h:1.19.12.1
--- src/sys/compat/netbsd32/netbsd32_conv.h:1.19 Mon Jun 2 14:12:08 2008
+++ src/sys/compat/netbsd32/netbsd32_conv.h Wed Jun 9 18:13:46 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_conv.h,v 1.19 2008/06/02 14:12:08 njoly Exp $ */
+/* $NetBSD: netbsd32_conv.h,v 1.19.12.1 2010/06/09 18:13:46 matt Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -234,6 +234,7 @@
mhp->msg_name = NETBSD32PTR64(mhp32->msg_name);
mhp->msg_namelen = mhp32->msg_namelen;
+ mhp->msg_iov = NETBSD32PTR64(mhp32->msg_iov);
mhp->msg_iovlen = (size_t)mhp32->msg_iovlen;
mhp->msg_control = NETBSD32PTR64(mhp32->msg_control);
mhp->msg_controllen = mhp32->msg_controllen;
Index: src/sys/compat/netbsd32/netbsd32_socket.c
diff -u src/sys/compat/netbsd32/netbsd32_socket.c:1.33 src/sys/compat/netbsd32/netbsd32_socket.c:1.33.12.1
--- src/sys/compat/netbsd32/netbsd32_socket.c:1.33 Tue Jun 24 11:18:15 2008
+++ src/sys/compat/netbsd32/netbsd32_socket.c Wed Jun 9 18:13:46 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_socket.c,v 1.33 2008/06/24 11:18:15 ad Exp $ */
+/* $NetBSD: netbsd32_socket.c,v 1.33.12.1 2010/06/09 18:13:46 matt Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_socket.c,v 1.33 2008/06/24 11:18:15 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_socket.c,v 1.33.12.1 2010/06/09 18:13:46 matt Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -77,6 +77,7 @@
M_WAITOK);
} else
iov = aiov;
+
msg.msg_flags = SCARG(uap, flags);
uiov = (struct iovec *)NETBSD32PTR64(msg.msg_iov);
error = netbsd32_to_iovecin((struct netbsd32_iovec *)uiov,
@@ -237,10 +238,8 @@
iov = (struct iovec *)malloc(
sizeof(struct iovec) * (u_int)msg.msg_iovlen, M_IOV,
M_WAITOK);
- } else if ((u_int)msg.msg_iovlen > 0)
+ } else
iov = aiov;
- else
- return (EMSGSIZE);
error = netbsd32_to_iovecin((struct netbsd32_iovec *)msg.msg_iov,
iov, msg.msg_iovlen);