|
@@ -463,6 +463,8 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
|
|
|
|
|
|
/* Release the task */
|
|
|
raw_spin_unlock_irqrestore(&task->pi_lock, flags);
|
|
|
+ put_task_struct(task);
|
|
|
+
|
|
|
if (!rt_mutex_owner(lock)) {
|
|
|
/*
|
|
|
* If the requeue above changed the top waiter, then we need
|
|
@@ -472,9 +474,8 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
|
|
|
if (top_waiter != rt_mutex_top_waiter(lock))
|
|
|
wake_up_process(rt_mutex_top_waiter(lock)->task);
|
|
|
raw_spin_unlock(&lock->wait_lock);
|
|
|
- goto out_put_task;
|
|
|
+ return 0;
|
|
|
}
|
|
|
- put_task_struct(task);
|
|
|
|
|
|
/* Grab the next task */
|
|
|
task = rt_mutex_owner(lock);
|