Module Name:    src
Committed By:   dsl
Date:           Thu Jul 12 18:13:08 UTC 2012

Modified Files:
        src/sys/arch/i386/i386: freebsd_syscall.c ibcs2_syscall.c
            svr4_syscall.c

Log Message:
Fix previous - syscall_fancy() didn't contain the check for p_trace_anabled.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/i386/i386/freebsd_syscall.c
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/i386/i386/ibcs2_syscall.c
cvs rdiff -u -r1.46 -r1.47 src/sys/arch/i386/i386/svr4_syscall.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/arch/i386/i386/freebsd_syscall.c
diff -u src/sys/arch/i386/i386/freebsd_syscall.c:1.38 src/sys/arch/i386/i386/freebsd_syscall.c:1.39
--- src/sys/arch/i386/i386/freebsd_syscall.c:1.38	Thu Jul 12 17:26:42 2012
+++ src/sys/arch/i386/i386/freebsd_syscall.c	Thu Jul 12 18:13:08 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: freebsd_syscall.c,v 1.38 2012/07/12 17:26:42 dsl Exp $	*/
+/*	$NetBSD: freebsd_syscall.c,v 1.39 2012/07/12 18:13:08 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: freebsd_syscall.c,v 1.38 2012/07/12 17:26:42 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: freebsd_syscall.c,v 1.39 2012/07/12 18:13:08 dsl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -112,7 +112,8 @@ freebsd_syscall(struct trapframe *frame)
 			goto bad;
 	}
 
-	if ((error = trace_enter(code, args, callp->sy_narg)) == 0) {
+	if (!__predict_false(p->p_trace_enabled)
+	    || (error = trace_enter(code, args, callp->sy_narg)) == 0) {
 		rval[0] = 0;
 		rval[1] = frame->tf_edx; /* need to keep edx for shared FreeBSD bins */
 		error = sy_call(callp, l, args, rval);
@@ -142,7 +143,8 @@ freebsd_syscall(struct trapframe *frame)
 		break;
 	}
 
-	trace_exit(code, rval, error);
+	if (__predict_false(p->p_trace_enabled))
+		trace_exit(code, rval, error);
 
 	userret(l);
 }

Index: src/sys/arch/i386/i386/ibcs2_syscall.c
diff -u src/sys/arch/i386/i386/ibcs2_syscall.c:1.47 src/sys/arch/i386/i386/ibcs2_syscall.c:1.48
--- src/sys/arch/i386/i386/ibcs2_syscall.c:1.47	Thu Jul 12 17:26:42 2012
+++ src/sys/arch/i386/i386/ibcs2_syscall.c	Thu Jul 12 18:13:08 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ibcs2_syscall.c,v 1.47 2012/07/12 17:26:42 dsl Exp $	*/
+/*	$NetBSD: ibcs2_syscall.c,v 1.48 2012/07/12 18:13:08 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ibcs2_syscall.c,v 1.47 2012/07/12 17:26:42 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ibcs2_syscall.c,v 1.48 2012/07/12 18:13:08 dsl Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_vm86.h"
@@ -75,12 +75,14 @@ ibcs2_syscall(struct trapframe *frame)
 	char * params;
 	const struct sysent *callp;
 	struct lwp *l;
+	struct proc *p;
 	int error;
 	size_t argsize;
 	register_t code, args[8], rval[2];
 
 	l = curlwp;
-	LWP_CACHE_CREDS(l, l->l_proc);
+	p = l->l_proc;
+	LWP_CACHE_CREDS(l, p);
 
 	code = frame->tf_eax;
 	if (IBCS2_HIGH_SYSCALL(code))
@@ -109,7 +111,8 @@ ibcs2_syscall(struct trapframe *frame)
 			goto bad;
 	}
 
-	if ((error = trace_enter(code, args, callp->sy_narg)) == 0) {
+	if (!__predict_false(p->p_trace_enabled)
+	    || (error = trace_enter(code, args, callp->sy_narg)) == 0) {
 		rval[0] = 0;
 		rval[1] = 0;
 		error = sy_call(callp, l, args, rval);
@@ -140,7 +143,8 @@ ibcs2_syscall(struct trapframe *frame)
 		break;
 	}
 
-	trace_exit(code, rval, error);
+	if (__predict_false(p->p_trace_enabled))
+		trace_exit(code, rval, error);
 
 	userret(l);
 }

Index: src/sys/arch/i386/i386/svr4_syscall.c
diff -u src/sys/arch/i386/i386/svr4_syscall.c:1.46 src/sys/arch/i386/i386/svr4_syscall.c:1.47
--- src/sys/arch/i386/i386/svr4_syscall.c:1.46	Thu Jul 12 17:26:42 2012
+++ src/sys/arch/i386/i386/svr4_syscall.c	Thu Jul 12 18:13:08 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: svr4_syscall.c,v 1.46 2012/07/12 17:26:42 dsl Exp $	*/
+/*	$NetBSD: svr4_syscall.c,v 1.47 2012/07/12 18:13:08 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: svr4_syscall.c,v 1.46 2012/07/12 17:26:42 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: svr4_syscall.c,v 1.47 2012/07/12 18:13:08 dsl Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_vm86.h"
@@ -74,12 +74,14 @@ svr4_syscall(struct trapframe *frame)
 	char *params;
 	const struct sysent *callp;
 	struct lwp *l;
+	struct proc *p;
 	int error;
 	size_t argsize;
 	register_t code, args[8], rval[2];
 
 	l = curlwp;
-	LWP_CACHE_CREDS(l, l->l_proc);
+	p = l->l_proc;
+	LWP_CACHE_CREDS(l, p);
 
 	code = frame->tf_eax;
 	callp = svr4_sysent;
@@ -106,7 +108,8 @@ svr4_syscall(struct trapframe *frame)
 			goto bad;
 	}
 
-	if ((error = trace_enter(code, args, callp->sy_narg)) == 0) {
+	if (!__predict_false(p->p_trace_enabled)
+	    || (error = trace_enter(code, args, callp->sy_narg)) == 0) {
 		rval[0] = 0;
 		rval[1] = 0;
 		error = sy_call(callp, l, args, rval);
@@ -137,7 +140,8 @@ svr4_syscall(struct trapframe *frame)
 		break;
 	}
 
-	trace_exit(code, rval, error);
+	if (__predict_false(p->p_trace_enabled))
+		trace_exit(code, rval, error);
 
 	userret(l);
 }

Reply via email to