[PATCH tip/core/rcu 0/30] Miscellaneous fixes for v5.7
From: Paul E. McKenney
Date: Fri Feb 14 2020 - 18:55:41 EST
Hello!
This series provides miscellaneous fixes.
1. Fix nfs_access_get_cached_rcu() sparse error, courtesy of
Madhuparna Bhowmik.
2. Warn on for_each_leaf_node_cpu_mask() from non-leaf rcu_node
structure.
3. Fix exp_funnel_lock()/rcu_exp_wait_wake() datarace.
4. Provide debug symbols and line numbers in KCSAN runs.
5. Add WRITE_ONCE() to rcu_node ->qsmask update.
6. Add WRITE_ONCE to rcu_node ->exp_seq_rq store.
7. Add READ_ONCE() to rcu_node ->gp_seq.
8. Add WRITE_ONCE() to rcu_state ->gp_req_activity.
9. Add WRITE_ONCE() to rcu_node ->qsmaskinitnext.
10. Add WRITE_ONCE() to rt_mutex ->owner.
11. Add READ_ONCE() to rcu_segcblist ->tails[].
12. *_ONCE() for grace-period progress indicators.
13. Fix typos in beginning comments, courtesy of SeongJae Park.
14. Add READ_ONCE() to rcu_data ->gpwrap.
15. Add *_ONCE() to rcu_data ->rcu_forced_tick.
16. Add *_ONCE() to rcu_node ->boost_kthread_status.
17. Use hlist_unhashed_lockless() in timer_pending(), courtesy of
Eric Dumazet.
18. Remove dead code from rcu_segcblist_insert_pend_cbs().
19. Add WRITE_ONCE() to rcu_state ->gp_start.
20. Fix rcu_barrier_callback() race condition.
21. Add brackets around cond argument in __list_check_rcu macro,
courtesy of Amol Grover.
22. Don't flag non-starting GPs before GP kthread is running.
23. Add missing annotation for rcu_nocb_bypass_lock(), courtesy
of Jules Irenge.
24. Add missing annotation for rcu_nocb_bypass_unlock(), courtesy
of Jules Irenge.
25. Optimize and protect atomic_cmpxchg() loop.
26. Tighten rcu_lockdep_assert_cblist_protected() check.
27. Make nocb_gp_wait() double-check unexpected-callback warning.
28. Mark rcu_state.ncpus to detect concurrent writes.
29. Mark rcu_state.gp_seq to detect concurrent writes.
30. Make rcu_barrier() account for offline no-CBs CPUs.
Thanx, Paul
------------------------------------------------------------------------
fs/nfs/dir.c | 2
include/linux/rculist.h | 4 -
include/linux/timer.h | 2
include/trace/events/rcu.h | 1
kernel/locking/rtmutex.c | 2
kernel/rcu/Makefile | 4 +
kernel/rcu/rcu.h | 6 +-
kernel/rcu/rcu_segcblist.c | 4 -
kernel/rcu/srcutree.c | 2
kernel/rcu/tree.c | 134 +++++++++++++++++++++++++--------------------
kernel/rcu/tree_exp.h | 4 -
kernel/rcu/tree_plugin.h | 21 ++++---
kernel/rcu/tree_stall.h | 41 +++++++------
kernel/time/timer.c | 7 +-
14 files changed, 135 insertions(+), 99 deletions(-)