All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.