[PATCH] printk: Remove preempt_disable() from __wake_up_klogd()

From: Sebastian Andrzej Siewior

Date: Fri Sep 11 2026 - 06:56:04 EST


I was puzzled why there is a preempt_disable(). Turns out it is due to
the per-CPU usage of the previous irq_work, as introduced in commit
74876a98a87a1 ("printk: Wake up klogd using irq_work"), where the or and
enqueue must happen on the same CPU.

Since we don't have this anymore, it can go.

Remove the preempt_disable from __wake_up_klogd().

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
---

I'm sorry, I noticed this after starring at it once I sent the patch. I
could resend and merge it into the previous if it is preferred.

kernel/printk/printk.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 7c5a220e84323..0fd6c37e2b333 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -4623,7 +4623,6 @@ static void __wake_up_klogd(int val)
if (WARN_ON_ONCE(console_irqwork_blocked))
return;

- preempt_disable();
/*
* Guarantee any new records can be seen by tasks preparing to wait
* before this context checks if the wait queue is empty.
@@ -4640,8 +4639,6 @@ static void __wake_up_klogd(int val)

if (val & PRINTK_PENDING_OUTPUT)
irq_work_queue(&pending_output_work);
-
- preempt_enable();
}

/**
--
2.55.0