changeset 8028:cd6790ddf574

6763758 processor_bind() incorrectly reports old binding as PBIND_NONE for bound processes on unbind
author Alexander Kolbasov <Alexander.Kolbasov@Sun.COM>
date Thu, 06 Nov 2008 15:40:19 -0800
parents 0ed4c2d79627
children d7695059e7a6
files usr/src/uts/common/os/cpu.c
diffstat 1 files changed, 2 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/os/cpu.c	Thu Nov 06 15:16:47 2008 -0500
+++ b/usr/src/uts/common/os/cpu.c	Thu Nov 06 15:40:19 2008 -0800
@@ -23,8 +23,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 /*
  * Architecture-independent CPU control functions.
  */
@@ -2451,11 +2449,12 @@
 	 * reporting PBIND_NONE for a process when some LWPs are bound.
 	 */
 	binding = tp->t_bind_cpu;
+	if (binding != PBIND_NONE)
+		*obind = binding;	/* record old binding */
 
 	switch (bind) {
 	case PBIND_QUERY:
 		/* Just return the old binding */
-		*obind = binding;
 		thread_unlock(tp);
 		return (0);
 
@@ -2471,7 +2470,6 @@
 		 *  binding
 		 */
 		TB_CPU_SOFT_SET(tp);
-		*obind = binding;
 		thread_unlock(tp);
 		return (0);
 
@@ -2481,16 +2479,10 @@
 		 *  binding
 		 */
 		TB_CPU_HARD_SET(tp);
-		*obind = binding;
 		thread_unlock(tp);
 		return (0);
 
-	case PBIND_NONE:
-		break;
-
 	default:
-		/* record old binding */
-		*obind = binding;
 		break;
 	}