551
552 plist_del(&waiter->pi_list_entry, &owner->pi_waiters);
553
554 if (rt_mutex_has_waiters(lock)) {
555 struct rt_mutex_waiter *next;
556
557 next = rt_mutex_top_waiter(lock);
558 plist_add(&next->pi_list_entry, &owner->pi_waiters);
559 }
560 __rt_mutex_adjust_prio(owner);
561
562 if (owner->pi_blocked_on)
563 chain_walk = 1;
564
565 spin_unlock_irqrestore(&owner->pi_lock, flags);
566 }
567
568 WARN_ON(!plist_node_empty(&waiter->pi_list_entry));
569
570 if (!chain_walk)
571 return;
572
573
574 get_task_struct(owner);
575
576 spin_unlock(&lock->wait_lock);
577
578 rt_mutex_adjust_prio_chain(owner, 0, lock, NULL, current);
579
580 spin_lock(&lock->wait_lock);
581}
582
583
584
585
586
587
588void rt_mutex_adjust_pi(struct task_struct *task)
589{
590 struct rt_mutex_waiter *waiter;
591 unsigned long flags;