The update.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().
Unified · Split
| @@ -822,7 +822,8 @@ static int __init rcu_spawn_tasks_kthread(void) · 821 unmodified lines | |||
| 822 | struct task_struct *t; | 822 | struct task_struct *t; |
| 823 | 823 | ||
| 824 | t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread"); | 824 | t = kthread_run(rcu_tasks_kthread, NULL, "rcu_tasks_kthread"); |
| 825 | BUG_ON(IS_ERR(t)); | 825 | if (WARN_ONCE(IS_ERR(t), "%s: Could not start Tasks-RCU grace-period kthread, OOM is now expected behavior\n", __func__)) |
| 826 | return 0; | ||
| 826 | smp_mb(); /* Ensure others see full kthread. */ | 827 | smp_mb(); /* Ensure others see full kthread. */ |
| 827 | WRITE_ONCE(rcu_tasks_kthread_ptr, t); | 828 | WRITE_ONCE(rcu_tasks_kthread_ptr, t); |
| 828 | return 0; | 829 | return 0; |