diff options
author | Alexander Kolbasov <Alexander.Kolbasov@Sun.COM> | 2008-11-06 15:40:19 -0800 |
---|---|---|
committer | Alexander Kolbasov <Alexander.Kolbasov@Sun.COM> | 2008-11-06 15:40:19 -0800 |
commit | 3eea75d7fe911f13703d0937e65c6023aac827ab (patch) | |
tree | 616c9a2383a8e496a68a7c5cdd3f142dc314dc9a /usr/src | |
parent | 962dc36be5566e0fce26e872bf8c9f5073b322ad (diff) | |
download | illumos-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.c | 12 |
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; } |