Re: [PATCH v3 2/6] sched/rtmutex/deadline: Fix a PI crash for deadline tasks

From: Peter Zijlstra
Date: Wed Apr 20 2016 - 09:19:41 EST


On Thu, Apr 14, 2016 at 07:37:03PM +0800, Xunlei Pang wrote:
> + /* Updated under pi_lock and rtmutex lock */
> struct rb_node *pi_waiters_leftmost;
> + struct rb_node *pi_waiters_leftmost_copy;

> struct task_struct *rt_mutex_get_top_task(struct task_struct *task)
> {
> + if (!task->pi_waiters_leftmost_copy)
> return NULL;
>
> + return rb_entry(task->pi_waiters_leftmost_copy,
> + struct rt_mutex_waiter, pi_tree_entry)->task;
> }

why ?! Why not keep a regular task_struct pointer and avoid this stuff?