diff options
| author | Paul E. McKenney <paulmck@linux.ibm.com> | 2018-10-22 08:04:03 -0700 | 
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.ibm.com> | 2018-11-08 21:41:57 -0800 | 
| commit | 08543bda42ef06c5ee4cd74501c894aa7cc13ea8 (patch) | |
| tree | 41249a4a05ffa2faf9200e57a607601a84c188ec /kernel/rcu/tree.c | |
| parent | 042d4c70a203998697b34eaad1a99f6f09d09e4d (diff) | |
rcu: Eliminate BUG_ON() for kernel/rcu/tree.c
The tree.c file has a number of calls to BUG_ON(), which panics the
kernel, which is not a good strategy for devices (like embedded) that
don't have a way to capture console output.  This commit therefore
converts these BUG_ON() calls to WARN_ON_ONCE() and WARN_ONCE().
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.c')
| -rw-r--r-- | kernel/rcu/tree.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 121f833acd04..bdb6659a8dbc 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2826,7 +2826,7 @@ __call_rcu(struct rcu_head *head, rcu_callback_t func, int cpu, bool lazy)  		 * Very early boot, before rcu_init().  Initialize if needed  		 * and then drop through to queue the callback.  		 */ -		BUG_ON(cpu != -1); +		WARN_ON_ONCE(cpu != -1);  		WARN_ON_ONCE(!rcu_is_watching());  		if (rcu_segcblist_empty(&rdp->cblist))  			rcu_segcblist_init(&rdp->cblist); @@ -3485,7 +3485,8 @@ static int __init rcu_spawn_gp_kthread(void)  	rcu_scheduler_fully_active = 1;  	t = kthread_create(rcu_gp_kthread, NULL, "%s", rcu_state.name); -	BUG_ON(IS_ERR(t)); +	if (WARN_ONCE(IS_ERR(t), "%s: Could not start grace-period kthread, OOM is now expected behavior\n", __func__)) +		return 0;  	rnp = rcu_get_root();  	raw_spin_lock_irqsave_rcu_node(rnp, flags);  	rcu_state.gp_kthread = t;  | 
