Unverified Commit a8a9daf9 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14306 printk: Fix the qspinlock deadloop caused by zap_locks()

parents f9870b23 1553dcf3
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1634,11 +1634,21 @@ void zap_locks(void)
{
	if (raw_spin_is_locked(&logbuf_lock)) {
		debug_locks_off();
#ifdef CONFIG_QUEUED_SPINLOCKS
		/* Do not clear the tail to avoid infinite loop in qspinlock. */
		WRITE_ONCE(logbuf_lock.raw_lock.locked_pending, 0);
#else
		raw_spin_lock_init(&logbuf_lock);
#endif
	}

	if (raw_spin_is_locked(&console_owner_lock)) {
#ifdef CONFIG_QUEUED_SPINLOCKS
		/* Do not clear the tail to avoid infinite loop in qspinlock. */
		WRITE_ONCE(console_owner_lock.raw_lock.locked_pending, 0);
#else
		raw_spin_lock_init(&console_owner_lock);
#endif
		console_owner = NULL;
		console_waiter = false;
	}