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

!4580 printk: fix double unlock issue in logbuf_lock

parents b1c17765 17050fe1
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2495,7 +2495,7 @@ void console_unlock(void)
	static char text[LOG_LINE_MAX + PREFIX_MAX];
	static int panic_console_dropped;
	unsigned long flags;
	bool do_cond_resched, retry;
	bool do_cond_resched, retry, locked = false;
	struct printk_info info;
	struct printk_record r;

@@ -2541,6 +2541,7 @@ void console_unlock(void)

		printk_safe_enter_irqsave(flags);
		raw_spin_lock(&logbuf_lock);
		locked = true;
skip:
		if (!prb_read_valid(prb, console_seq, &r))
			break;
@@ -2588,6 +2589,7 @@ void console_unlock(void)
				console_msg_format & MSG_FORMAT_SYSLOG,
				printk_time);
		console_seq++;
		locked = false;
		raw_spin_unlock(&logbuf_lock);

		/*
@@ -2619,6 +2621,7 @@ void console_unlock(void)

	console_locked = 0;

	if (likely(locked))
		raw_spin_unlock(&logbuf_lock);

	up_console_sem();