summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorAlexander Kolbasov <Alexander.Kolbasov@Sun.COM>2008-11-06 15:40:19 -0800
committerAlexander Kolbasov <Alexander.Kolbasov@Sun.COM>2008-11-06 15:40:19 -0800
commit3eea75d7fe911f13703d0937e65c6023aac827ab (patch)
tree616c9a2383a8e496a68a7c5cdd3f142dc314dc9a /usr/src
parent962dc36be5566e0fce26e872bf8c9f5073b322ad (diff)
downloadillumos-joyent-3eea75d7fe911f13703d0937e65c6023aac827ab.tar.gz
6763758 processor_bind() incorrectly reports old binding as PBIND_NONE for bound processes on unbind
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/os/cpu.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/usr/src/uts/common/os/cpu.c b/usr/src/uts/common/os/cpu.c
index 4d332ea042..2b57c57ac9 100644
--- a/usr/src/uts/common/os/cpu.c
+++ b/usr/src/uts/common/os/cpu.c
@@ -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 @@ cpu_bind_thread(kthread_id_t tp, processorid_t bind, processorid_t *obind,
* 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 @@ cpu_bind_thread(kthread_id_t tp, processorid_t bind, processorid_t *obind,
* binding
*/
TB_CPU_SOFT_SET(tp);
- *obind = binding;
thread_unlock(tp);
return (0);
@@ -2481,16 +2479,10 @@ cpu_bind_thread(kthread_id_t tp, processorid_t bind, processorid_t *obind,
* binding
*/
TB_CPU_HARD_SET(tp);
- *obind = binding;
thread_unlock(tp);
return (0);
- case PBIND_NONE:
- break;
-
default:
- /* record old binding */
- *obind = binding;
break;
}