On Mon, Aug 10, 2020 at 09:32:57PM +0000, Uriel Guajardo wrote:
+static inline void kunit_check_locking_bugs(struct kunit *test,
unsigned long saved_preempt_count)
+{
- preempt_count_set(saved_preempt_count);
+#ifdef CONFIG_TRACE_IRQFLAGS
- if (softirq_count())
current->softirqs_enabled = 0;
- else
current->softirqs_enabled = 1;
+#endif +#if IS_ENABLED(CONFIG_LOCKDEP)
- local_irq_disable();
- if (!debug_locks) {
kunit_set_failure(test);
lockdep_reset();
- }
- local_irq_enable();
+#endif +}
Unless you can guarantee this runs before SMP brinup, that lockdep_reset() is terminally broken.