From: Thorsten Blum <blum@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
Christian Brauner <brauner@kernel.org>,
Sang-Heon Jeon <ekffu200098@gmail.com>,
Breno Leitao <leitao@debian.org>,
"Mike Rapoport (Microsoft)" <rppt@kernel.org>,
Ryan Roberts <ryan.roberts@arm.com>
Cc: Thorsten Blum <blum@kernel.org>,
Wilson Felipe Pereira <wfelipe@google.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH] init: Remove strlcat() and sprintf() from do_one_initcall()
Date: Sat, 14 Nov 2026 12:05:31 +0100 [thread overview]
Message-ID: <20261114110531.26138-2-blum@kernel.org> (raw)
In preparation for removing strlcat() from the kernel [1], format the
warning directly in WARN(). This also removes the temporary 64-byte
buffer and the sprintf() call while preserving the warning text.
Link: https://github.com/KSPP/linux/issues/370 [1]
Signed-off-by: Thorsten Blum <blum@kernel.org>
---
init/main.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/init/main.c b/init/main.c
index 93a2b12976f0..430b403e0880 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1397,7 +1397,8 @@ static inline void do_trace_initcall_level(const char *level)
int __init_or_module do_one_initcall(initcall_t fn)
{
int count = preempt_count();
- char msgbuf[64];
+ bool preempt_imbalanced;
+ bool irqs_left_disabled;
int ret;
if (initcall_blacklisted(fn))
@@ -1407,17 +1408,17 @@ int __init_or_module do_one_initcall(initcall_t fn)
ret = fn();
do_trace_initcall_finish(fn, ret);
- msgbuf[0] = 0;
-
- if (preempt_count() != count) {
- sprintf(msgbuf, "preemption imbalance ");
+ preempt_imbalanced = preempt_count() != count;
+ if (preempt_imbalanced)
preempt_count_set(count);
- }
- if (irqs_disabled()) {
- strlcat(msgbuf, "disabled interrupts ", sizeof(msgbuf));
+
+ irqs_left_disabled = irqs_disabled();
+ if (irqs_left_disabled)
local_irq_enable();
- }
- WARN(msgbuf[0], "initcall %pS returned with %s\n", fn, msgbuf);
+
+ WARN(preempt_imbalanced || irqs_left_disabled, "initcall %pS returned with %s%s\n", fn,
+ preempt_imbalanced ? "preemption imbalance " : "",
+ irqs_left_disabled ? "disabled interrupts " : "");
add_latent_entropy();
return ret;
reply other threads:[~2026-11-14 11:06 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261114110531.26138-2-blum@kernel.org \
--to=blum@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=ekffu200098@gmail.com \
--cc=leitao@debian.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=wfelipe@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.