]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 May 2023 12:57:14 +0000 (14:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 May 2023 12:57:14 +0000 (14:57 +0200)
added patches:
printk-declare-printk_deferred_-enter-safe-in-include-linux-printk.h.patch

queue-5.10/printk-declare-printk_deferred_-enter-safe-in-include-linux-printk.h.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/printk-declare-printk_deferred_-enter-safe-in-include-linux-printk.h.patch b/queue-5.10/printk-declare-printk_deferred_-enter-safe-in-include-linux-printk.h.patch
new file mode 100644 (file)
index 0000000..fedfab4
--- /dev/null
@@ -0,0 +1,80 @@
+From stable-owner@vger.kernel.org Sun May 14 06:41:59 2023
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Date: Sun, 14 May 2023 13:41:27 +0900
+Subject: printk: declare printk_deferred_{enter,safe}() in include/linux/printk.h
+To: stable@vger.kernel.org
+Cc: John Ogness <john.ogness@linutronix.de>, Petr Mladek <pmladek@suse.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Message-ID: <767ab028-d946-98d5-4a13-d6ed6df77763@I-love.SAKURA.ne.jp>
+
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+
+commit 85e3e7fbbb720b9897fba9a99659e31cbd1c082e upstream.
+
+[This patch implements subset of original commit 85e3e7fbbb72 ("printk:
+remove NMI tracking") where commit 1007843a9190 ("mm/page_alloc: fix
+potential deadlock on zonelist_update_seq seqlock") depends on, for
+commit 3d36424b3b58 ("mm/page_alloc: fix race condition between
+build_all_zonelists and page allocation") was backported to stable.]
+
+All NMI contexts are handled the same as the safe context: store the
+message and defer printing. There is no need to have special NMI
+context tracking for this. Using in_nmi() is enough.
+
+There are several parts of the kernel that are manually calling into
+the printk NMI context tracking in order to cause general printk
+deferred printing:
+
+    arch/arm/kernel/smp.c
+    arch/powerpc/kexec/crash.c
+    kernel/trace/trace.c
+
+For arm/kernel/smp.c and powerpc/kexec/crash.c, provide a new
+function pair printk_deferred_enter/exit that explicitly achieves the
+same objective.
+
+For ftrace, remove the printk context manipulation completely. It was
+added in commit 03fc7f9c99c1 ("printk/nmi: Prevent deadlock when
+accessing the main log buffer in NMI"). The purpose was to enforce
+storing messages directly into the ring buffer even in NMI context.
+It really should have only modified the behavior in NMI context.
+There is no need for a special behavior any longer. All messages are
+always stored directly now. The console deferring is handled
+transparently in vprintk().
+
+Signed-off-by: John Ogness <john.ogness@linutronix.de>
+[pmladek@suse.com: Remove special handling in ftrace.c completely.
+Signed-off-by: Petr Mladek <pmladek@suse.com>
+Link: https://lore.kernel.org/r/20210715193359.25946-5-john.ogness@linutronix.de
+[penguin-kernel: Copy only printk_deferred_{enter,safe}() definition ]
+Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/printk.h |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/include/linux/printk.h
++++ b/include/linux/printk.h
+@@ -623,4 +623,23 @@ static inline void print_hex_dump_debug(
+ #define print_hex_dump_bytes(prefix_str, prefix_type, buf, len)       \
+       print_hex_dump_debug(prefix_str, prefix_type, 16, 1, buf, len, true)
++#ifdef CONFIG_PRINTK
++extern void __printk_safe_enter(void);
++extern void __printk_safe_exit(void);
++/*
++ * The printk_deferred_enter/exit macros are available only as a hack for
++ * some code paths that need to defer all printk console printing. Interrupts
++ * must be disabled for the deferred duration.
++ */
++#define printk_deferred_enter __printk_safe_enter
++#define printk_deferred_exit __printk_safe_exit
++#else
++static inline void printk_deferred_enter(void)
++{
++}
++static inline void printk_deferred_exit(void)
++{
++}
++#endif
++
+ #endif
index 5b0be21684a0ee0ae4c3d934ce336ec92fc8fbc2..7c70496714bc9b500a2af05cf8df0f737f48968c 100644 (file)
@@ -375,3 +375,4 @@ kvm-x86-do-not-set-st-preempted-when-going-back-to-user-space.patch
 kvm-x86-revalidate-steal-time-cache-if-msr-value-changes.patch
 kvm-x86-do-not-report-preemption-if-the-steal-time-cache-is-stale.patch
 kvm-x86-move-guest_pv_has-out-of-user_access-section.patch
+printk-declare-printk_deferred_-enter-safe-in-include-linux-printk.h.patch