* [paulmck-rcu:dev.2026.08.26b 52/70] kernel/rcu/srcutree.c:1973:3-9: preceding lock on line 1953
@ 2026-09-05 22:03 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-05 22:03 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Julia Lawall
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Paul E. McKenney" <paulmck@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev.2026.08.26b
head: 02d3dbb63ea80cac75734d77309015f13d5e73c9
commit: e473ba35dc1c19ba17fb717920ebd8c6f880a825 [52/70] srcutree: Suppress srcu_advance_state() mutex_lock in atomic
:::::: branch date: 2 days ago
:::::: commit date: 13 days ago
config: i386-randconfig-053-20260906 (https://download.01.org/0day-ci/archive/20260906/202609060521.ZcMw4fGR-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202609060521.ZcMw4fGR-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> kernel/rcu/srcutree.c:1973:3-9: preceding lock on line 1953
kernel/rcu/srcutree.c:1982:3-9: preceding lock on line 1953
kernel/rcu/srcutree.c:1991:3-9: preceding lock on line 1953
vim +1973 kernel/rcu/srcutree.c
dad81a2026841b5 Paul E. McKenney 2017-03-25 1940
dad81a2026841b5 Paul E. McKenney 2017-03-25 1941 /*
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1942 * Core SRCU state machine. Push state bits of ->srcu_gp_seq
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1943 * to SRCU_STATE_SCAN2, and invoke srcu_gp_end() when scan has
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1944 * completed in that state. Set is_atomic to indicate that
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1945 * the caller is excluding other calls so that ->srcu_gp_mutex
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1946 * is not needed, and to indicate that blocking is forbidden.
dad81a2026841b5 Paul E. McKenney 2017-03-25 1947 */
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1948 static void srcu_advance_state(struct srcu_struct *ssp, bool is_atomic)
dad81a2026841b5 Paul E. McKenney 2017-03-25 1949 {
dad81a2026841b5 Paul E. McKenney 2017-03-25 1950 int idx;
dad81a2026841b5 Paul E. McKenney 2017-03-25 1951
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1952 if (!is_atomic)
e3a6ab25cfa0fcd Paul E. McKenney 2023-03-17 @1953 mutex_lock(&ssp->srcu_sup->srcu_gp_mutex);
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1954
dad81a2026841b5 Paul E. McKenney 2017-03-25 1955 /*
dad81a2026841b5 Paul E. McKenney 2017-03-25 1956 * Because readers might be delayed for an extended period after
821ca6fa15d8649 Paul E. McKenney 2024-12-19 1957 * fetching ->srcu_ctrp for their index, at any point in time there
dad81a2026841b5 Paul E. McKenney 2017-03-25 1958 * might well be readers using both idx=0 and idx=1. We therefore
dad81a2026841b5 Paul E. McKenney 2017-03-25 1959 * need to wait for readers to clear from both index values before
dad81a2026841b5 Paul E. McKenney 2017-03-25 1960 * invoking a callback.
dad81a2026841b5 Paul E. McKenney 2017-03-25 1961 *
dad81a2026841b5 Paul E. McKenney 2017-03-25 1962 * The load-acquire ensures that we see the accesses performed
dad81a2026841b5 Paul E. McKenney 2017-03-25 1963 * by the prior grace period.
dad81a2026841b5 Paul E. McKenney 2017-03-25 1964 */
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1965 idx = rcu_seq_state(smp_load_acquire(&ssp->srcu_sup->srcu_gp_seq)); /* ^^^ */
dad81a2026841b5 Paul E. McKenney 2017-03-25 1966 if (idx == SRCU_STATE_IDLE) {
175b45ed343a9c5 Paul E. McKenney 2026-03-14 1967 raw_spin_lock_irq_rcu_node(ssp->srcu_sup);
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1968 if (ULONG_CMP_GE(ssp->srcu_sup->srcu_gp_seq, ssp->srcu_sup->srcu_gp_seq_needed)) {
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1969 WARN_ON_ONCE(rcu_seq_state(ssp->srcu_sup->srcu_gp_seq));
175b45ed343a9c5 Paul E. McKenney 2026-03-14 1970 raw_spin_unlock_irq_rcu_node(ssp->srcu_sup);
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1971 if (!is_atomic)
e3a6ab25cfa0fcd Paul E. McKenney 2023-03-17 1972 mutex_unlock(&ssp->srcu_sup->srcu_gp_mutex);
dad81a2026841b5 Paul E. McKenney 2017-03-25 @1973 return;
dad81a2026841b5 Paul E. McKenney 2017-03-25 1974 }
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1975 idx = rcu_seq_state(READ_ONCE(ssp->srcu_sup->srcu_gp_seq));
dad81a2026841b5 Paul E. McKenney 2017-03-25 1976 if (idx == SRCU_STATE_IDLE)
aacb5d91ab1bfbb Paul E. McKenney 2018-10-28 1977 srcu_gp_start(ssp);
175b45ed343a9c5 Paul E. McKenney 2026-03-14 1978 raw_spin_unlock_irq_rcu_node(ssp->srcu_sup);
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1979 if (idx != SRCU_STATE_IDLE) {
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1980 if (!is_atomic)
e3a6ab25cfa0fcd Paul E. McKenney 2023-03-17 1981 mutex_unlock(&ssp->srcu_sup->srcu_gp_mutex);
dad81a2026841b5 Paul E. McKenney 2017-03-25 1982 return; /* Someone else started the grace period. */
dad81a2026841b5 Paul E. McKenney 2017-03-25 1983 }
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1984 }
dad81a2026841b5 Paul E. McKenney 2017-03-25 1985
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1986 if (rcu_seq_state(READ_ONCE(ssp->srcu_sup->srcu_gp_seq)) == SRCU_STATE_SCAN1) {
821ca6fa15d8649 Paul E. McKenney 2024-12-19 1987 idx = !(ssp->srcu_ctrp - &ssp->sda->srcu_ctrs[0]);
aacb5d91ab1bfbb Paul E. McKenney 2018-10-28 1988 if (!try_check_zero(ssp, idx, 1)) {
e473ba35dc1c19b Paul E. McKenney 2026-08-18 1989 if (!is_atomic)
e3a6ab25cfa0fcd Paul E. McKenney 2023-03-17 1990 mutex_unlock(&ssp->srcu_sup->srcu_gp_mutex);
dad81a2026841b5 Paul E. McKenney 2017-03-25 1991 return; /* readers present, retry later. */
da915ad5cf25b5f Paul E. McKenney 2017-04-05 1992 }
aacb5d91ab1bfbb Paul E. McKenney 2018-10-28 1993 srcu_flip(ssp);
175b45ed343a9c5 Paul E. McKenney 2026-03-14 1994 raw_spin_lock_irq_rcu_node(ssp->srcu_sup);
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 1995 rcu_seq_set_state(&ssp->srcu_sup->srcu_gp_seq, SRCU_STATE_SCAN2);
3b46679c623c276 Paul E. McKenney 2023-03-17 1996 ssp->srcu_sup->srcu_n_exp_nodelay = 0;
175b45ed343a9c5 Paul E. McKenney 2026-03-14 1997 raw_spin_unlock_irq_rcu_node(ssp->srcu_sup);
dad81a2026841b5 Paul E. McKenney 2017-03-25 1998 }
dad81a2026841b5 Paul E. McKenney 2017-03-25 1999
03200b5ca3b4d4e Paul E. McKenney 2023-03-17 2000 if (rcu_seq_state(READ_ONCE(ssp->srcu_sup->srcu_gp_seq)) == SRCU_STATE_SCAN2) {
dad81a2026841b5 Paul E. McKenney 2017-03-25 2001
dad81a2026841b5 Paul E. McKenney 2017-03-25 2002 /*
dad81a2026841b5 Paul E. McKenney 2017-03-25 2003 * SRCU read-side critical sections are normally short,
dad81a2026841b5 Paul E. McKenney 2017-03-25 2004 * so check at least twice in quick succession after a flip.
dad81a2026841b5 Paul E. McKenney 2017-03-25 2005 */
821ca6fa15d8649 Paul E. McKenney 2024-12-19 2006 idx = !(ssp->srcu_ctrp - &ssp->sda->srcu_ctrs[0]);
aacb5d91ab1bfbb Paul E. McKenney 2018-10-28 2007 if (!try_check_zero(ssp, idx, 2)) {
e473ba35dc1c19b Paul E. McKenney 2026-08-18 2008 if (!is_atomic)
e3a6ab25cfa0fcd Paul E. McKenney 2023-03-17 2009 mutex_unlock(&ssp->srcu_sup->srcu_gp_mutex);
da915ad5cf25b5f Paul E. McKenney 2017-04-05 2010 return; /* readers present, retry later. */
da915ad5cf25b5f Paul E. McKenney 2017-04-05 2011 }
3b46679c623c276 Paul E. McKenney 2023-03-17 2012 ssp->srcu_sup->srcu_n_exp_nodelay = 0;
aacb5d91ab1bfbb Paul E. McKenney 2018-10-28 2013 srcu_gp_end(ssp); /* Releases ->srcu_gp_mutex. */
dad81a2026841b5 Paul E. McKenney 2017-03-25 2014 }
dad81a2026841b5 Paul E. McKenney 2017-03-25 2015 }
dad81a2026841b5 Paul E. McKenney 2017-03-25 2016
:::::: The code at line 1973 was first introduced by commit
:::::: dad81a2026841b5e2651aab58a7398c13cc05847 srcu: Introduce CLASSIC_SRCU Kconfig option
:::::: TO: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
:::::: CC: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-05 22:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-05 22:03 [paulmck-rcu:dev.2026.08.26b 52/70] kernel/rcu/srcutree.c:1973:3-9: preceding lock on line 1953 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.