Since the priority may have changed, the requeue is a good place to update
the priority since we're already deleting and adding to a new list.
Signed-off-by: Daniel Walker <[email protected]>
---
kernel/futex.c | 4 ++++
1 file changed, 4 insertions(+)
Index: linux-2.6.25/kernel/futex.c
===================================================================
--- linux-2.6.25.orig/kernel/futex.c
+++ linux-2.6.25/kernel/futex.c
@@ -949,7 +949,11 @@ static int futex_requeue(u32 __user *uad
* requeue.
*/
if (likely(head1 != &hb2->chain)) {
+ struct task_struct *task = this->task;
+ int prio = min(task->normal_prio, MAX_RT_PRIO);
+
plist_del(&this->list, &hb1->chain);
+ plist_node_init(&this->list, prio);
plist_add(&this->list, &hb2->chain);
this->lock_ptr = &hb2->lock;
#ifdef CONFIG_DEBUG_PI_LIST
--