diff options
author | John M. Calandrino <jmc@jupiter-cs.cs.unc.edu> | 2007-05-01 14:16:51 -0400 |
---|---|---|
committer | John M. Calandrino <jmc@jupiter-cs.cs.unc.edu> | 2007-05-01 14:16:51 -0400 |
commit | 092781be74a821bf750bb1500c4944fdb7eb5b57 (patch) | |
tree | 76a8de8883d7f3bf789e4a7dd9f81feb2e7d1031 /arch/i386 | |
parent | b7566d5586a99683fa54b48bf10374e4ef5c5769 (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.c | 11 |
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 | } |