[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(-)