aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386
diff options
context:
space:
mode:
authorJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-05-01 14:16:51 -0400
committerJohn M. Calandrino <jmc@jupiter-cs.cs.unc.edu>2007-05-01 14:16:51 -0400
commit092781be74a821bf750bb1500c4944fdb7eb5b57 (patch)
tree76a8de8883d7f3bf789e4a7dd9f81feb2e7d1031 /arch/i386
parentb7566d5586a99683fa54b48bf10374e4ef5c5769 (diff)
Fixed some race conditions in the priority inheritance code, and fixed a
glitch or two in GSN-EDF.
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/kernel/pi_sem_syscalls.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/i386/kernel/pi_sem_syscalls.c b/arch/i386/kernel/pi_sem_syscalls.c
index ad0df7add0..8071b0fe46 100644
--- a/arch/i386/kernel/pi_sem_syscalls.c
+++ b/arch/i386/kernel/pi_sem_syscalls.c
@@ -81,13 +81,10 @@ asmlinkage long sys_pi_down(pi_sema_id sem_id)
81 81
82 /* Update inherited priority if required. */ 82 /* Update inherited priority if required. */
83 spin_lock_irqsave(&pi_sems[sem_id].wait.lock, flags); 83 spin_lock_irqsave(&pi_sems[sem_id].wait.lock, flags);
84 if (!current->rt_param.inh_task) { 84 if (!pi_sems[sem_id].holder) {
85 pi_sems[sem_id].holder = current; 85 pi_sems[sem_id].holder = current;
86 current->rt_param.inh_task = current; 86 curr_sched_plugin->inherit_priority(&pi_sems[sem_id], NULL);
87 if (pi_sems[sem_id].hp_sem_task) 87 }
88 curr_sched_plugin->inherit_priority(
89 &pi_sems[sem_id], pi_sems[sem_id].hp_sem_task);
90 }
91 spin_unlock_irqrestore(&pi_sems[sem_id].wait.lock, flags); 88 spin_unlock_irqrestore(&pi_sems[sem_id].wait.lock, flags);
92 return 0; 89 return 0;
93} 90}