Wed Aug 5 19:53:42 2009 UTC ()
Fix ktrace of data from iovec based system calls.
Fixes PR/41819


(dsl)
diff -r1.148 -r1.149 src/sys/kern/kern_ktrace.c

cvs diff -r1.148 -r1.149 src/sys/kern/kern_ktrace.c (expand / switch to context diff)
--- src/sys/kern/kern_ktrace.c 2009/01/11 02:45:52 1.148
+++ src/sys/kern/kern_ktrace.c 2009/08/05 19:53:42 1.149
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_ktrace.c,v 1.148 2009/01/11 02:45:52 christos Exp $	*/
+/*	$NetBSD: kern_ktrace.c,v 1.149 2009/08/05 19:53:42 dsl 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.148 2009/01/11 02:45:52 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.149 2009/08/05 19:53:42 dsl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -673,7 +673,7 @@
 	struct ktrace_entry *kte;
 	struct ktr_genio *ktp;
 	size_t resid = len, cnt, buflen;
-	void *cp;
+	char *cp;
 
  next:
 	buflen = min(PAGE_SIZE, resid + sizeof(struct ktr_genio));
@@ -693,6 +693,7 @@
 		if (copyin(iov->iov_base, cp, cnt) != 0)
 			goto out;
 		kte->kte_kth.ktr_len += cnt;
+		cp += cnt;
 		buflen -= cnt;
 		resid -= cnt;
 		iov->iov_len -= cnt;