From 3565071f226432336a54d0193d729fa4508a3394 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:28:00 +0200 Subject: Adding debian version 6.6.15-2. Signed-off-by: Daniel Baumann --- ...n-Ensure-ownership-release-on-failed-emit.patch | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 debian/patches-rt/0101-printk-nbcon-Ensure-ownership-release-on-failed-emit.patch (limited to 'debian/patches-rt/0101-printk-nbcon-Ensure-ownership-release-on-failed-emit.patch') diff --git a/debian/patches-rt/0101-printk-nbcon-Ensure-ownership-release-on-failed-emit.patch b/debian/patches-rt/0101-printk-nbcon-Ensure-ownership-release-on-failed-emit.patch new file mode 100644 index 0000000000..d96f2dc2b9 --- /dev/null +++ b/debian/patches-rt/0101-printk-nbcon-Ensure-ownership-release-on-failed-emit.patch @@ -0,0 +1,58 @@ +From: John Ogness +Date: Fri, 20 Oct 2023 09:52:59 +0000 +Subject: [PATCH 101/134] printk: nbcon: Ensure ownership release on failed + emit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patches-6.6.7-rt18.tar.xz + +Until now it was assumed that ownership has been lost when the +write_atomic() callback fails. nbcon_emit_next_record() only +returns false when ownership has been lost. + +Ensure ownership has been lost before reporting failure by +explicitly attempting a release. If the current context is not +the owner, the release has no effect. + +Signed-off-by: John Ogness +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/printk/nbcon.c | 19 ++++++++++--------- + 1 file changed, 10 insertions(+), 9 deletions(-) + +--- a/kernel/printk/nbcon.c ++++ b/kernel/printk/nbcon.c +@@ -852,7 +852,7 @@ static bool nbcon_emit_next_record(struc + unsigned long con_dropped; + struct nbcon_state cur; + unsigned long dropped; +- bool done; ++ bool done = false; + + /* + * The printk buffers are filled within an unsafe section. This +@@ -891,17 +891,18 @@ static bool nbcon_emit_next_record(struc + nbcon_state_read(con, &cur); + wctxt->unsafe_takeover = cur.unsafe_takeover; + +- if (con->write_atomic) { ++ if (con->write_atomic) + done = con->write_atomic(con, wctxt); +- } else { +- nbcon_context_release(ctxt); +- WARN_ON_ONCE(1); +- done = false; +- } + +- /* If not done, the emit was aborted. */ +- if (!done) ++ if (!done) { ++ /* ++ * The emit was aborted, probably due to a loss of ownership. ++ * Ensure ownership was lost or released before reporting the ++ * loss. ++ */ ++ nbcon_context_release(ctxt); + return false; ++ } + + /* + * Since any dropped message was successfully output, reset the -- cgit v1.2.3