aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-05-02 15:19:54 -0400
committerJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-05-02 15:19:54 -0400
commite0da4b7e417cf28739646f43aa47d8495bc6998b (patch)
treed313b8e11bea9086e7b75883cbedfd14ce92ae6f /arch
parent86afe70125df4ee62cef85cbb035c8c9ab353885 (diff)
Fixed a bug in SRP semaphores after changing to per-processor ceilings.
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/srp_sem_syscalls.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/i386/kernel/srp_sem_syscalls.c b/arch/i386/kernel/srp_sem_syscalls.c
index 9c73325cf8..a3ba88b905 100644
--- a/arch/i386/kernel/srp_sem_syscalls.c
+++ b/arch/i386/kernel/srp_sem_syscalls.c
@@ -143,9 +143,9 @@ asmlinkage long sys_reg_task_srp_sem(srp_sema_id sem_id, pid_t t_pid)
143 return -EINVAL; 143 return -EINVAL;
144 144
145 queue_lock_irqsave(&srp_lock, flags); 145 queue_lock_irqsave(&srp_lock, flags);
146 if (srp_sems[sem_id] == -1) 146 if (srp_sems[sem_id].cpu == -1)
147 srp_sems[sem_id] = get_partition(t); 147 srp_sems[sem_id].cpu = get_partition(t);
148 else if (srp_sems[sem_id] != get_partition(t)) { 148 else if (srp_sems[sem_id].cpu != get_partition(t)) {
149 queue_unlock_irqrestore(&srp_lock, flags); 149 queue_unlock_irqrestore(&srp_lock, flags);
150 return -EINVAL; 150 return -EINVAL;
151 } 151 }
@@ -193,7 +193,7 @@ asmlinkage long sys_srp_sema_free(srp_sema_id sem_id)
193 srp_higher_prio(srp_sems[sem_ctr].pc_task, 193 srp_higher_prio(srp_sems[sem_ctr].pc_task,
194 __get_cpu_var(spc_tasks))) 194 __get_cpu_var(spc_tasks)))
195 __get_cpu_var(spc_tasks) = srp_sems[sem_ctr].pc_task; 195 __get_cpu_var(spc_tasks) = srp_sems[sem_ctr].pc_task;
196 spc_task[sem_id].cpu = -1; 196 srp_sems[sem_id].cpu = -1;
197 queue_unlock_irqrestore(&srp_lock, flags); 197 queue_unlock_irqrestore(&srp_lock, flags);
198 198
199 return 0; 199 return 0;