rcu: Permit call_rcu() from CPU_DYING notifiers
As of:29494be71a("rcu,cleanup: simplify the code when cpu is dying") RCU adopts callbacks from the dying CPU in its CPU_DYING notifier, which means that any callbacks posted by later CPU_DYING notifiers are ignored until the CPU comes back online. A WARN_ON_ONCE() was added to __call_rcu() by:e560140008("rcu: Simplify offline processing") to check for this condition. Although this condition did not trigger (at least as far as I know) during -next testing, it did recently trigger in mainline: https://lkml.org/lkml/2012/4/2/34 What is needed longer term is for RCU's CPU_DEAD notifier to adopt any callbacks that were posted by CPU_DYING notifiers, however, the Linux kernel has been running with this sort of thing happening for quite some time. So the only thing that qualifies as a regression is the WARN_ON_ONCE(), which this commit removes. Making RCU's CPU_DEAD notifier adopt callbacks posted by CPU_DYING notifiers is a topic for the 3.5 release of the Linux kernel. Reported-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									0034102808
								
							
						
					
					
						commit
						92c38702e9
					
				| @ -1820,7 +1820,6 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu), | ||||
| 	 * a quiescent state betweentimes. | ||||
| 	 */ | ||||
| 	local_irq_save(flags); | ||||
| 	WARN_ON_ONCE(cpu_is_offline(smp_processor_id())); | ||||
| 	rdp = this_cpu_ptr(rsp->rda); | ||||
| 
 | ||||
| 	/* Add the callback to our list. */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user