svn commit: r349871 - head/sys/kern

John Baldwin jhb at FreeBSD.org
Tue Jul 9 23:58:13 UTC 2019


Author: jhb
Date: Tue Jul  9 23:58:12 2019
New Revision: 349871
URL: https://svnweb.freebsd.org/changeset/base/349871

Log:
  Use 'retval' label for first error in syscallenter().
  
  This is more consistent with the rest of the function and lets us
  unindent most of the function.
  
  Reviewed by:	kib
  MFC after:	1 month
  Sponsored by:	DARPA
  Differential Revision:	https://reviews.freebsd.org/D20897

Modified:
  head/sys/kern/subr_syscall.c

Modified: head/sys/kern/subr_syscall.c
==============================================================================
--- head/sys/kern/subr_syscall.c	Tue Jul  9 22:24:22 2019	(r349870)
+++ head/sys/kern/subr_syscall.c	Tue Jul  9 23:58:12 2019	(r349871)
@@ -85,69 +85,68 @@ syscallenter(struct thread *td)
 	    (uintptr_t)td, "pid:%d", td->td_proc->p_pid, "arg0:%p", sa->args[0],
 	    "arg1:%p", sa->args[1], "arg2:%p", sa->args[2]);
 
-	if (error == 0) {
+	if (error != 0)
+		goto retval;
 
-		STOPEVENT(p, S_SCE, sa->narg);
-		if (p->p_flag & P_TRACED) {
-			PROC_LOCK(p);
-			if (p->p_ptevents & PTRACE_SCE)
-				ptracestop((td), SIGTRAP, NULL);
-			PROC_UNLOCK(p);
-		}
-		if (td->td_dbgflags & TDB_USERWR) {
-			/*
-			 * Reread syscall number and arguments if
-			 * debugger modified registers or memory.
-			 */
-			error = (p->p_sysent->sv_fetch_syscall_args)(td);
+	STOPEVENT(p, S_SCE, sa->narg);
+	if ((p->p_flag & P_TRACED) != 0) {
+		PROC_LOCK(p);
+		if (p->p_ptevents & PTRACE_SCE)
+			ptracestop((td), SIGTRAP, NULL);
+		PROC_UNLOCK(p);
+	}
+	if ((td->td_dbgflags & TDB_USERWR) != 0) {
+		/*
+		 * Reread syscall number and arguments if debugger
+		 * modified registers or memory.
+		 */
+		error = (p->p_sysent->sv_fetch_syscall_args)(td);
 #ifdef KTRACE
-			if (KTRPOINT(td, KTR_SYSCALL))
-				ktrsyscall(sa->code, sa->narg, sa->args);
+		if (KTRPOINT(td, KTR_SYSCALL))
+			ktrsyscall(sa->code, sa->narg, sa->args);
 #endif
-			if (error != 0)
-				goto retval;
-		}
+		if (error != 0)
+			goto retval;
+	}
 
 #ifdef CAPABILITY_MODE
-		/*
-		 * In capability mode, we only allow access to system calls
-		 * flagged with SYF_CAPENABLED.
-		 */
-		if (IN_CAPABILITY_MODE(td) &&
-		    !(sa->callp->sy_flags & SYF_CAPENABLED)) {
-			error = ECAPMODE;
-			goto retval;
-		}
+	/*
+	 * In capability mode, we only allow access to system calls
+	 * flagged with SYF_CAPENABLED.
+	 */
+	if (IN_CAPABILITY_MODE(td) &&
+	    !(sa->callp->sy_flags & SYF_CAPENABLED)) {
+		error = ECAPMODE;
+		goto retval;
+	}
 #endif
 
-		error = syscall_thread_enter(td, sa->callp);
-		if (error != 0)
-			goto retval;
+	error = syscall_thread_enter(td, sa->callp);
+	if (error != 0)
+		goto retval;
 
 #ifdef KDTRACE_HOOKS
-		/* Give the syscall:::entry DTrace probe a chance to fire. */
-		if (__predict_false(systrace_enabled &&
-		    sa->callp->sy_entry != 0))
-			(*systrace_probe_func)(sa, SYSTRACE_ENTRY, 0);
+	/* Give the syscall:::entry DTrace probe a chance to fire. */
+	if (__predict_false(systrace_enabled && sa->callp->sy_entry != 0))
+		(*systrace_probe_func)(sa, SYSTRACE_ENTRY, 0);
 #endif
 
-		AUDIT_SYSCALL_ENTER(sa->code, td);
-		error = (sa->callp->sy_call)(td, sa->args);
-		AUDIT_SYSCALL_EXIT(error, td);
+	AUDIT_SYSCALL_ENTER(sa->code, td);
+	error = (sa->callp->sy_call)(td, sa->args);
+	AUDIT_SYSCALL_EXIT(error, td);
 
-		/* Save the latest error return value. */
-		if ((td->td_pflags & TDP_NERRNO) == 0)
-			td->td_errno = error;
+	/* Save the latest error return value. */
+	if ((td->td_pflags & TDP_NERRNO) == 0)
+		td->td_errno = error;
 
 #ifdef KDTRACE_HOOKS
-		/* Give the syscall:::return DTrace probe a chance to fire. */
-		if (__predict_false(systrace_enabled &&
-		    sa->callp->sy_return != 0))
-			(*systrace_probe_func)(sa, SYSTRACE_RETURN,
-			    error ? -1 : td->td_retval[0]);
+	/* Give the syscall:::return DTrace probe a chance to fire. */
+	if (__predict_false(systrace_enabled && sa->callp->sy_return != 0))
+		(*systrace_probe_func)(sa, SYSTRACE_RETURN,
+		    error ? -1 : td->td_retval[0]);
 #endif
-		syscall_thread_exit(td, sa->callp);
-	}
+	syscall_thread_exit(td, sa->callp);
+
  retval:
 	KTR_STOP4(KTR_SYSC, "syscall", syscallname(p, sa->code),
 	    (uintptr_t)td, "pid:%d", td->td_proc->p_pid, "error:%d", error,


More information about the svn-src-all mailing list