The wq_watchdog_timer_fn() is executed in the softirq context, this is already in the RCU read critical section, this commit therefore remove rcu_read_lock/unlock() in wq_watchdog_timer_fn().
Showing the changes to kernel/workqueue.c (1 of 1 file). Show all
Unified · Split
| @@ -7544,8 +7544,6 @@ static void wq_watchdog_timer_fn(struct timer_list *unused) · 7543 unmodified lines | |||
| 7544 | if (!thresh) | 7544 | if (!thresh) |
| 7545 | return; | 7545 | return; |
| 7546 | 7546 | ||
| 7547 | rcu_read_lock(); | ||
| 7548 | |||
| 7549 | for_each_pool(pool, pi) { | 7547 | for_each_pool(pool, pi) { |
| 7550 | unsigned long pool_ts, touched, ts; | 7548 | unsigned long pool_ts, touched, ts; |
| 7551 | 7549 | ||
| @@ -7587,8 +7585,6 @@ static void wq_watchdog_timer_fn(struct timer_list *unused) · 35 unmodified lines | |||
| 7587 | 7585 | ||
| 7588 | } | 7586 | } |
| 7589 | 7587 | ||
| 7590 | rcu_read_unlock(); | ||
| 7591 | |||
| 7592 | if (lockup_detected) | 7588 | if (lockup_detected) |
| 7593 | show_all_workqueues(); | 7589 | show_all_workqueues(); |
| 7594 | 7590 | ||