Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2002 18:49:34 -0700 (PDT)
From:      Julian Elischer <julian@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 13554 for review
Message-ID:  <200206290149.g5T1nYAV065861@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=13554

Change 13554 by julian@julian_ref on 2002/06/28 18:49:16

	Move userret in syscall for the other architectures where that makes
	sense. (to not have Giant SOMETIMES set)

Affected files ...

.. //depot/projects/kse/sys/alpha/alpha/trap.c#29 edit
.. //depot/projects/kse/sys/i386/i386/trap.c#56 edit
.. //depot/projects/kse/sys/ia64/ia64/trap.c#24 edit
.. //depot/projects/kse/sys/powerpc/powerpc/trap.c#16 edit
.. //depot/projects/kse/sys/sparc64/sparc64/trap.c#32 edit

Differences ...

==== //depot/projects/kse/sys/alpha/alpha/trap.c#29 (text+ko) ====


==== //depot/projects/kse/sys/i386/i386/trap.c#56 (text+ko) ====


==== //depot/projects/kse/sys/ia64/ia64/trap.c#24 (text+ko) ====

@@ -872,14 +872,14 @@
 		break;
 	}
 
-	userret(td, framep, sticks);
-
 	/*
 	 * Release Giant if we had to get it.
 	 */
 	if ((callp->sy_narg & SYF_MPSAFE) == 0)
 		mtx_unlock(&Giant);
 
+	userret(td, framep, sticks);
+
 #ifdef KTRACE
 	if (KTRPOINT(td, KTR_SYSRET))
 		ktrsysret(code, error, td->td_retval[0]);
@@ -1043,15 +1043,15 @@
 	}
 
 	/*
-	 * Handle reschedule and other end-of-syscall issues
+	 * Release Giant if we previously set it.
 	 */
-	userret(td, framep, sticks);
+	if ((callp->sy_narg & SYF_MPSAFE) == 0)
+		mtx_unlock(&Giant);
 
 	/*
-	 * Release Giant if we previously set it.
+	 * Handle reschedule and other end-of-syscall issues
 	 */
-	if ((callp->sy_narg & SYF_MPSAFE) == 0)
-		mtx_unlock(&Giant);
+	userret(td, framep, sticks);
 
 #ifdef KTRACE
 	if (KTRPOINT(td, KTR_SYSRET))

==== //depot/projects/kse/sys/powerpc/powerpc/trap.c#16 (text+ko) ====


==== //depot/projects/kse/sys/sparc64/sparc64/trap.c#32 (text+ko) ====

@@ -657,17 +657,17 @@
 	}
 
 	/*
-	 * Handle reschedule and other end-of-syscall issues
-	 */
-	userret(td, tf, sticks);
-
-	/*
 	 * Release Giant if we had to get it.  Don't use mtx_owned(),
 	 * we want to catch broken syscalls.
 	 */
 	if ((callp->sy_narg & SYF_MPSAFE) == 0)
 		mtx_unlock(&Giant);
 
+	/*
+	 * Handle reschedule and other end-of-syscall issues
+	 */
+	userret(td, tf, sticks);
+
 #ifdef KTRACE
 	if (KTRPOINT(td, KTR_SYSRET))
 		ktrsysret(code, error, td->td_retval[0]);

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206290149.g5T1nYAV065861>