It's unnecessary to try to print stacks of blocked tasks in the case
that ndetected == 0. Furthermore, calling rcu_print_detail_task_stall()
causes to acquire rnp locks as many times as the number of leaf nodes
plus one for root node. It's unnecessary at all in the case.

Signed-off-by: Byungchul Park <byungchul.p...@lge.com>
---
 kernel/rcu/tree.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 287f468..ab2f743 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -1374,6 +1374,9 @@ static void print_other_cpu_stall(struct rcu_state *rsp, 
unsigned long gpnum)
               (long)rsp->gpnum, (long)rsp->completed, totqlen);
        if (ndetected) {
                rcu_dump_cpu_stacks(rsp);
+
+               /* Complain about tasks blocking the grace period. */
+               rcu_print_detail_task_stall(rsp);
        } else {
                if (READ_ONCE(rsp->gpnum) != gpnum ||
                    READ_ONCE(rsp->completed) == gpnum) {
@@ -1390,9 +1393,6 @@ static void print_other_cpu_stall(struct rcu_state *rsp, 
unsigned long gpnum)
                }
        }
 
-       /* Complain about tasks blocking the grace period. */
-       rcu_print_detail_task_stall(rsp);
-
        rcu_check_gp_kthread_starvation(rsp);
 
        panic_on_rcu_stall();
-- 
1.9.1

Reply via email to