Module Name:    src
Committed By:   martin
Date:           Tue Sep 13 07:01:08 UTC 2016

Modified Files:
        src/sys/compat/common: uipc_syscalls_43.c
        src/sys/compat/linux/common: linux_socket.c
        src/sys/compat/netbsd32: netbsd32_compat_43.c netbsd32_socket.c
        src/sys/compat/osf1: osf1_socket.c
        src/sys/compat/svr4: svr4_stream.c
        src/sys/kern: kern_ktrace.c uipc_syscalls.c
        src/sys/sys: ktrace.h socketvar.h

Log Message:
Make the ktrace record written by do_sys_sendmsg/do_sys_recvmsg overridable
by the caller. Use this in compat_netbsd32 to log the 32bit version, so
the 32bit userland kdump is happy.


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 src/sys/compat/common/uipc_syscalls_43.c
cvs rdiff -u -r1.132 -r1.133 src/sys/compat/linux/common/linux_socket.c
cvs rdiff -u -r1.53 -r1.54 src/sys/compat/netbsd32/netbsd32_compat_43.c
cvs rdiff -u -r1.43 -r1.44 src/sys/compat/netbsd32/netbsd32_socket.c
cvs rdiff -u -r1.21 -r1.22 src/sys/compat/osf1/osf1_socket.c
cvs rdiff -u -r1.86 -r1.87 src/sys/compat/svr4/svr4_stream.c
cvs rdiff -u -r1.167 -r1.168 src/sys/kern/kern_ktrace.c
cvs rdiff -u -r1.182 -r1.183 src/sys/kern/uipc_syscalls.c
cvs rdiff -u -r1.63 -r1.64 src/sys/sys/ktrace.h
cvs rdiff -u -r1.140 -r1.141 src/sys/sys/socketvar.h

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/common/uipc_syscalls_43.c
diff -u src/sys/compat/common/uipc_syscalls_43.c:1.46 src/sys/compat/common/uipc_syscalls_43.c:1.47
--- src/sys/compat/common/uipc_syscalls_43.c:1.46	Sun Nov  9 17:48:07 2014
+++ src/sys/compat/common/uipc_syscalls_43.c	Tue Sep 13 07:01:07 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_syscalls_43.c,v 1.46 2014/11/09 17:48:07 maxv Exp $	*/
+/*	$NetBSD: uipc_syscalls_43.c,v 1.47 2016/09/13 07:01:07 martin Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1990, 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_43.c,v 1.46 2014/11/09 17:48:07 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_43.c,v 1.47 2016/09/13 07:01:07 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -216,7 +216,7 @@ compat_43_sys_recvmsg(struct lwp *l, con
 	msg.msg_iov	= omsg.msg_iov;
 	msg.msg_flags	= (SCARG(uap, flags) & MSG_USERFLAGS) | MSG_IOVUSRSPACE;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from,
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, 0, &from,
 	    omsg.msg_accrights != NULL ? &control : NULL, retval);
 	if (error != 0)
 		return error;
@@ -361,7 +361,8 @@ compat_43_sys_sendmsg(struct lwp *l, con
 	if (error != 0)
 		goto bad;
 
-	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    NULL, 0, retval);
 
     bad:
 	if (nam != NULL)

Index: src/sys/compat/linux/common/linux_socket.c
diff -u src/sys/compat/linux/common/linux_socket.c:1.132 src/sys/compat/linux/common/linux_socket.c:1.133
--- src/sys/compat/linux/common/linux_socket.c:1.132	Mon Aug  1 03:15:30 2016
+++ src/sys/compat/linux/common/linux_socket.c	Tue Sep 13 07:01:07 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_socket.c,v 1.132 2016/08/01 03:15:30 ozaki-r Exp $	*/
+/*	$NetBSD: linux_socket.c,v 1.133 2016/09/13 07:01:07 martin Exp $	*/
 
 /*-
  * Copyright (c) 1995, 1998, 2008 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.132 2016/08/01 03:15:30 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_socket.c,v 1.133 2016/09/13 07:01:07 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -428,7 +428,8 @@ linux_sys_sendto(struct lwp *l, const st
 	aiov.iov_base = __UNCONST(SCARG(uap, msg));
 	aiov.iov_len = SCARG(uap, len);
 
-	return do_sys_sendmsg(l, SCARG(uap, s), &msg, bflags, retval);
+	return do_sys_sendmsg(l, SCARG(uap, s), &msg, bflags,
+	    NULL, 0, retval);
 }
 
 static void
@@ -617,7 +618,8 @@ linux_sys_sendmsg(struct lwp *l, const s
 	}
 
 skipcmsg:
-	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, bflags, retval);
+	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, bflags,
+	    NULL, 0, retval);
 	/* Freed internally */
 	ctl_mbuf = NULL;
 
@@ -779,7 +781,7 @@ linux_sys_recvmsg(struct lwp *l, const s
 	}
 	msg.msg_flags |= MSG_IOVUSRSPACE;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from,
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, 0, &from,
 	    msg.msg_control != NULL ? &control : NULL, retval);
 	if (error != 0)
 		return error;

Index: src/sys/compat/netbsd32/netbsd32_compat_43.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_43.c:1.53 src/sys/compat/netbsd32/netbsd32_compat_43.c:1.54
--- src/sys/compat/netbsd32/netbsd32_compat_43.c:1.53	Fri Apr 23 23:05:40 2010
+++ src/sys/compat/netbsd32/netbsd32_compat_43.c	Tue Sep 13 07:01:07 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_43.c,v 1.53 2010/04/23 23:05:40 joerg Exp $	*/
+/*	$NetBSD: netbsd32_compat_43.c,v 1.54 2016/09/13 07:01:07 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.53 2010/04/23 23:05:40 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_43.c,v 1.54 2016/09/13 07:01:07 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_43.h"
@@ -451,7 +451,7 @@ compat_43_netbsd32_orecvmsg(struct lwp *
 	msg.msg_iov	= iov;
 	msg.msg_flags	= SCARG(uap, flags) & MSG_USERFLAGS;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from,
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, 0, &from,
 	    NETBSD32PTR64(omsg.msg_accrights) != NULL ? &control : NULL,
 	    retval);
 	if (error != 0)
@@ -547,7 +547,8 @@ compat_43_netbsd32_osendmsg(struct lwp *
 		goto out;
 	}
 
-	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    &omsg, sizeof(omsg), retval);
 
     out:
 	if (iov != aiov)

Index: src/sys/compat/netbsd32/netbsd32_socket.c
diff -u src/sys/compat/netbsd32/netbsd32_socket.c:1.43 src/sys/compat/netbsd32/netbsd32_socket.c:1.44
--- src/sys/compat/netbsd32/netbsd32_socket.c:1.43	Thu Sep  8 18:54:03 2016
+++ src/sys/compat/netbsd32/netbsd32_socket.c	Tue Sep 13 07:01:07 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_socket.c,v 1.43 2016/09/08 18:54:03 martin Exp $	*/
+/*	$NetBSD: netbsd32_socket.c,v 1.44 2016/09/13 07:01:07 martin 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.43 2016/09/08 18:54:03 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_socket.c,v 1.44 2016/09/13 07:01:07 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -193,8 +193,8 @@ netbsd32_recvmsg(struct lwp *l, const st
 	msg.msg_iov = iov;
 	msg.msg_iovlen = msg32.msg_iovlen;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from,
-	    msg.msg_control != NULL ? &control : NULL, retval);
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &msg32, sizeof(msg32),
+	    &from, msg.msg_control != NULL ? &control : NULL, retval);
 	if (error != 0)
 		goto done;
 
@@ -367,7 +367,8 @@ netbsd32_sendmsg(struct lwp *l, const st
 		goto out;
 	msg.msg_iov = iov;
 
-	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	error = do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    &msg32, sizeof(msg32), retval);
 	/* msg.msg_control freed by do_sys_sendmsg() */
 
 	if (iov != aiov)
@@ -406,7 +407,8 @@ netbsd32_recvfrom(struct lwp *l, const s
 	msg.msg_control = NULL;
 	msg.msg_flags = SCARG(uap, flags) & MSG_USERFLAGS;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from, NULL, retval);
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, ~0U,
+	    &from, NULL, retval);
 	if (error != 0)
 		return error;
 
@@ -439,5 +441,6 @@ netbsd32_sendto(struct lwp *l, const str
 	aiov.iov_base = SCARG_P32(uap, buf);	/* XXX kills const */
 	aiov.iov_len = SCARG(uap, len);
 	msg.msg_flags = 0;
-	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    NULL, ~0U, retval);
 }

Index: src/sys/compat/osf1/osf1_socket.c
diff -u src/sys/compat/osf1/osf1_socket.c:1.21 src/sys/compat/osf1/osf1_socket.c:1.22
--- src/sys/compat/osf1/osf1_socket.c:1.21	Sat Aug  8 12:02:35 2015
+++ src/sys/compat/osf1/osf1_socket.c	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: osf1_socket.c,v 1.21 2015/08/08 12:02:35 maxv Exp $ */
+/* $NetBSD: osf1_socket.c,v 1.22 2016/09/13 07:01:08 martin Exp $ */
 
 /*
  * Copyright (c) 1999 Christopher G. Demetriou.  All rights reserved.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: osf1_socket.c,v 1.21 2015/08/08 12:02:35 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: osf1_socket.c,v 1.22 2016/09/13 07:01:08 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -130,7 +130,8 @@ osf1_sys_sendmsg_xopen(struct lwp *l, co
                 bsd_iovec[i].iov_len = osf_iovec.iov_len;
 	}
 
-	error = do_sys_sendmsg(l, SCARG(uap, s), &bsd_msghdr, flags, retval);
+	error = do_sys_sendmsg(l, SCARG(uap, s), &bsd_msghdr, flags, NULL, 0,
+	    retval);
 err:
 	kmem_free(bsd_iovec, iov_len * sizeof(struct iovec));
 	return error;

Index: src/sys/compat/svr4/svr4_stream.c
diff -u src/sys/compat/svr4/svr4_stream.c:1.86 src/sys/compat/svr4/svr4_stream.c:1.87
--- src/sys/compat/svr4/svr4_stream.c:1.86	Sat May 23 15:27:55 2015
+++ src/sys/compat/svr4/svr4_stream.c	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: svr4_stream.c,v 1.86 2015/05/23 15:27:55 rtr Exp $	 */
+/*	$NetBSD: svr4_stream.c,v 1.87 2016/09/13 07:01:08 martin Exp $	 */
 
 /*-
  * Copyright (c) 1994, 2008 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_stream.c,v 1.86 2015/05/23 15:27:55 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_stream.c,v 1.87 2016/09/13 07:01:08 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -1502,7 +1502,7 @@ svr4_sys_putmsg(struct lwp *l, const str
 		aiov.iov_base = NETBSD32PTR(dat.buf);
 		aiov.iov_len = dat.len;
 		error = do_sys_sendmsg(l, SCARG(uap, fd), &msg,
-			       SCARG(uap, flags), retval);
+			       SCARG(uap, flags),  NULL, 0, retval);
 
 		*retval = 0;
 		return error;
@@ -1734,8 +1734,8 @@ svr4_sys_getmsg(struct lwp *l, const str
 		aiov.iov_len = dat.maxlen;
 		msg.msg_flags = 0;
 
-		error = do_sys_recvmsg(l,  SCARG(uap, fd), &msg, &name, NULL,
-		    retval);
+		error = do_sys_recvmsg(l,  SCARG(uap, fd), &msg, NULL, 0,
+		    &name, NULL, retval);
 
 		if (error) {
 			DPRINTF(("getmsg: do_sys_recvmsg failed %d\n", error));

Index: src/sys/kern/kern_ktrace.c
diff -u src/sys/kern/kern_ktrace.c:1.167 src/sys/kern/kern_ktrace.c:1.168
--- src/sys/kern/kern_ktrace.c:1.167	Thu Jul  7 06:55:43 2016
+++ src/sys/kern/kern_ktrace.c	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_ktrace.c,v 1.167 2016/07/07 06:55:43 msaitoh Exp $	*/
+/*	$NetBSD: kern_ktrace.c,v 1.168 2016/09/13 07:01:08 martin Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.167 2016/07/07 06:55:43 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.168 2016/09/13 07:01:08 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -938,7 +938,7 @@ ktruser(const char *id, void *addr, size
 }
 
 void
-ktr_kuser(const char *id, void *addr, size_t len)
+ktr_kuser(const char *id, const void *addr, size_t len)
 {
 	struct ktrace_entry *kte;
 	struct ktr_user *ktp;

Index: src/sys/kern/uipc_syscalls.c
diff -u src/sys/kern/uipc_syscalls.c:1.182 src/sys/kern/uipc_syscalls.c:1.183
--- src/sys/kern/uipc_syscalls.c:1.182	Thu Jul  7 06:55:43 2016
+++ src/sys/kern/uipc_syscalls.c	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_syscalls.c,v 1.182 2016/07/07 06:55:43 msaitoh Exp $	*/
+/*	$NetBSD: uipc_syscalls.c,v 1.183 2016/09/13 07:01:08 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.182 2016/07/07 06:55:43 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls.c,v 1.183 2016/09/13 07:01:08 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pipe.h"
@@ -505,7 +505,8 @@ sys_sendto(struct lwp *l, const struct s
 	msg.msg_flags = 0;
 	aiov.iov_base = __UNCONST(SCARG(uap, buf)); /* XXXUNCONST kills const */
 	aiov.iov_len = SCARG(uap, len);
-	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    NULL, 0, retval);
 }
 
 int
@@ -525,12 +526,14 @@ sys_sendmsg(struct lwp *l, const struct 
 		return (error);
 
 	msg.msg_flags = MSG_IOVUSRSPACE;
-	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags), retval);
+	return do_sys_sendmsg(l, SCARG(uap, s), &msg, SCARG(uap, flags),
+	    NULL, 0, retval);
 }
 
 static int
 do_sys_sendmsg_so(struct lwp *l, int s, struct socket *so, file_t *fp,
-    struct msghdr *mp, int flags, register_t *retsize)
+    struct msghdr *mp, int flags, const void *kthdr, size_t ktsize,
+    register_t *retsize)
 {
 
 	struct iovec	aiov[UIO_SMALLIOV], *iov = aiov, *tiov, *ktriov = NULL;
@@ -540,7 +543,12 @@ do_sys_sendmsg_so(struct lwp *l, int s, 
 	size_t		len, iovsz;
 	int		i, error;
 
-	ktrkuser("msghdr", mp, sizeof *mp);
+	if (__predict_false(kthdr == NULL && ktsize == 0)) {
+		kthdr = mp;
+		ktsize = sizeof(*mp);
+	}
+	if (__predict_true(kthdr != NULL))
+		ktrkuser("msghdr", kthdr, ktsize);
 
 	/* If the caller passed us stuff in mbufs, we must free them. */
 	to = (mp->msg_flags & MSG_NAMEMBUF) ? mp->msg_name : NULL;
@@ -656,7 +664,7 @@ bad:
 
 int
 do_sys_sendmsg(struct lwp *l, int s, struct msghdr *mp, int flags,
-    register_t *retsize)
+    const void *kthdr, size_t ktsize, register_t *retsize)
 {
 	int		error;
 	struct socket	*so;
@@ -670,7 +678,8 @@ do_sys_sendmsg(struct lwp *l, int s, str
 			m_freem(mp->msg_control);
 		return error;
 	}
-	error = do_sys_sendmsg_so(l, s, so, fp, mp, flags, retsize);
+	error = do_sys_sendmsg_so(l, s, so, fp, mp, flags, kthdr, ktsize,
+	    retsize);
 	/* msg_name and msg_control freed */
 	fd_putfile(s);
 	return error;
@@ -701,7 +710,8 @@ sys_recvfrom(struct lwp *l, const struct
 	msg.msg_control = NULL;
 	msg.msg_flags = SCARG(uap, flags) & MSG_USERFLAGS;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from, NULL, retval);
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, 0, &from,
+	    NULL, retval);
 	if (error != 0)
 		return error;
 
@@ -731,7 +741,7 @@ sys_recvmsg(struct lwp *l, const struct 
 
 	msg.msg_flags = (SCARG(uap, flags) & MSG_USERFLAGS) | MSG_IOVUSRSPACE;
 
-	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, &from,
+	error = do_sys_recvmsg(l, SCARG(uap, s), &msg, NULL, 0, &from,
 	    msg.msg_control != NULL ? &control : NULL, retval);
 	if (error != 0)
 		return error;
@@ -786,7 +796,8 @@ sys_sendmmsg(struct lwp *l, const struct
 
 		msg->msg_flags = flags;
 
-		error = do_sys_sendmsg_so(l, s, so, fp, msg, flags, retval);
+		error = do_sys_sendmsg_so(l, s, so, fp, msg, flags,
+		    &msg, sizeof(msg), retval);
 		if (error)
 			break;
 
@@ -913,14 +924,20 @@ copyout_msg_control(struct lwp *l, struc
 
 static int
 do_sys_recvmsg_so(struct lwp *l, int s, struct socket *so, struct msghdr *mp,
-    struct mbuf **from, struct mbuf **control, register_t *retsize)
+    const void *ktrhdr, size_t ktsize, struct mbuf **from,
+    struct mbuf **control, register_t *retsize)
 {
 	struct iovec	aiov[UIO_SMALLIOV], *iov = aiov, *tiov, *ktriov = NULL;
 	struct uio	auio;
 	size_t		len, iovsz;
 	int		i, error;
 
-	ktrkuser("msghdr", mp, sizeof *mp);
+	if (__predict_false(ktrhdr == NULL && ktsize == 0)) {
+		ktrhdr = mp;
+		ktsize = sizeof *mp;
+	}
+	if (__predict_true(ktrhdr != NULL))
+		ktrkuser("msghdr", ktrhdr, ktsize);
 
 	*from = NULL;
 	if (control != NULL)
@@ -1002,15 +1019,17 @@ do_sys_recvmsg_so(struct lwp *l, int s, 
 
 
 int
-do_sys_recvmsg(struct lwp *l, int s, struct msghdr *mp, struct mbuf **from,
-    struct mbuf **control, register_t *retsize)
+do_sys_recvmsg(struct lwp *l, int s, struct msghdr *mp,
+    const void *ktrhdr, size_t ktrsize,
+    struct mbuf **from, struct mbuf **control, register_t *retsize)
 {
 	int error;
 	struct socket *so;
 
 	if ((error = fd_getsock(s, &so)) != 0)
 		return error;
-	error = do_sys_recvmsg_so(l, s, so, mp, from, control, retsize);
+	error = do_sys_recvmsg_so(l, s, so, mp, ktrhdr, ktrsize, from,
+	    control, retsize);
 	fd_putfile(s);
 	return error;
 }
@@ -1064,7 +1083,7 @@ sys_recvmmsg(struct lwp *l, const struct
 			from = NULL;
 		}
 
-		error = do_sys_recvmsg_so(l, s, so, msg, &from,
+		error = do_sys_recvmsg_so(l, s, so, msg, NULL, 0, &from,
 		    msg->msg_control != NULL ? &control : NULL, retval);
 		if (error) {
 			if (error == EAGAIN && dg > 0)

Index: src/sys/sys/ktrace.h
diff -u src/sys/sys/ktrace.h:1.63 src/sys/sys/ktrace.h:1.64
--- src/sys/sys/ktrace.h:1.63	Sat Mar 19 17:04:12 2016
+++ src/sys/sys/ktrace.h	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: ktrace.h,v 1.63 2016/03/19 17:04:12 dholland Exp $	*/
+/*	$NetBSD: ktrace.h,v 1.64 2016/09/13 07:01:08 martin Exp $	*/
 
 /*
  * Copyright (c) 1988, 1993
@@ -296,7 +296,7 @@ void ktr_namei2(const char *, size_t, co
 void ktr_psig(int, sig_t, const sigset_t *, const ksiginfo_t *);
 void ktr_syscall(register_t, const register_t [], int);
 void ktr_sysret(register_t, int, register_t *);
-void ktr_kuser(const char *, void *, size_t);
+void ktr_kuser(const char *, const void *, size_t);
 void ktr_mib(const int *a , u_int b);
 void ktr_execarg(const void *, size_t);
 void ktr_execenv(const void *, size_t);
@@ -398,7 +398,7 @@ ktrsysret(register_t a, int b, register_
 }
 
 static inline void
-ktrkuser(const char *a, void *b, size_t c)
+ktrkuser(const char *a, const void *b, size_t c)
 {
 	if (__predict_false(ktrace_on))
 		ktr_kuser(a, b, c);

Index: src/sys/sys/socketvar.h
diff -u src/sys/sys/socketvar.h:1.140 src/sys/sys/socketvar.h:1.141
--- src/sys/sys/socketvar.h:1.140	Wed Jun  1 04:15:54 2016
+++ src/sys/sys/socketvar.h	Tue Sep 13 07:01:08 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: socketvar.h,v 1.140 2016/06/01 04:15:54 pgoyette Exp $	*/
+/*	$NetBSD: socketvar.h,v 1.141 2016/09/13 07:01:08 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -351,9 +351,11 @@ void	free_control_mbuf(struct lwp *, str
 
 int	do_sys_getpeername(int, struct sockaddr *);
 int	do_sys_getsockname(int, struct sockaddr *);
-int	do_sys_sendmsg(struct lwp *, int, struct msghdr *, int, register_t *);
-int	do_sys_recvmsg(struct lwp *, int, struct msghdr *, struct mbuf **,
-	    struct mbuf **, register_t *);
+int	do_sys_sendmsg(struct lwp *, int, struct msghdr *, int,
+	    const void *, size_t, register_t *);
+int	do_sys_recvmsg(struct lwp *, int, struct msghdr *,
+	    const void *, size_t,
+	    struct mbuf **, struct mbuf **, register_t *);
 
 int	do_sys_bind(struct lwp *, int, struct sockaddr *);
 int	do_sys_connect(struct lwp *, int, struct sockaddr *);

Reply via email to