|
@@ -395,7 +395,7 @@ static void rcu_print_detail_task_stall_rnp(struct rcu_node *rnp)
|
|
|
raw_spin_unlock_irqrestore(&rnp->lock, flags);
|
|
|
return;
|
|
|
}
|
|
|
- t = list_entry(rnp->gp_tasks,
|
|
|
+ t = list_entry(rnp->gp_tasks->prev,
|
|
|
struct task_struct, rcu_node_entry);
|
|
|
list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry)
|
|
|
sched_show_task(t);
|
|
@@ -452,7 +452,7 @@ static int rcu_print_task_stall(struct rcu_node *rnp)
|
|
|
if (!rcu_preempt_blocked_readers_cgp(rnp))
|
|
|
return 0;
|
|
|
rcu_print_task_stall_begin(rnp);
|
|
|
- t = list_entry(rnp->gp_tasks,
|
|
|
+ t = list_entry(rnp->gp_tasks->prev,
|
|
|
struct task_struct, rcu_node_entry);
|
|
|
list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry) {
|
|
|
pr_cont(" P%d", t->pid);
|