From: David Disseldorp <ddiss@suse.de>
To: linux-fsdevel@vger.kernel.org
Cc: Al Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
David Disseldorp <ddiss@suse.de>
Subject: [RFC PATCH 6/6] initramfs: avoid static buffer for error message
Date: Tue, 15 Oct 2024 13:12:03 +0000 [thread overview]
Message-ID: <20241015133016.23468-7-ddiss@suse.de> (raw)
In-Reply-To: <20241015133016.23468-1-ddiss@suse.de>
With cpio_buf now allocated / freed by the unpack_to_rootfs() caller,
FSM-exit error messages can now be stashed in cpio_buf instead of in a
static buffer.
Before:
text data bss dec hex filename
7423 1062 8 8493 212d ./init/initramfs.o
After:
text data bss dec hex filename
7423 966 8 8397 20cd ./init/initramfs.o
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
init/initramfs.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/init/initramfs.c b/init/initramfs.c
index 7594a176d8d91..815a5daaa27ce 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -484,7 +484,6 @@ static char * __init unpack_to_rootfs(char *buf, unsigned long len)
long written;
decompress_fn decompress;
const char *compress_name;
- static __initdata char msg_buf[64];
state = Start;
this_header = 0;
@@ -514,10 +513,12 @@ static char * __init unpack_to_rootfs(char *buf, unsigned long len)
error("decompressor failed");
} else if (compress_name) {
if (!message) {
- snprintf(msg_buf, sizeof msg_buf,
+ /* FSM exit: cpio_buf reuse is safe */
+ snprintf(cpio_buf,
+ N_ALIGN(PATH_MAX) + PATH_MAX + 1,
"compression method %s not configured",
compress_name);
- message = msg_buf;
+ message = cpio_buf;
}
} else
error("invalid magic at start of compressed archive");
@@ -684,6 +685,7 @@ static void __init do_populate_rootfs(void *unused, async_cookie_t cookie)
* header, after which parse_header() converts and stashes fields into
* corresponding types. The same buffer is then reused for file path
* staging. 2 x PATH_MAX covers any possible symlink target.
+ * On error, @err may point to a @cpio_buf backed error message.
*/
cpio_buf = kmalloc(N_ALIGN(PATH_MAX) + PATH_MAX + 1, GFP_KERNEL);
if (!cpio_buf)
--
2.43.0
next prev parent reply other threads:[~2024-10-15 13:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 13:11 [RFC PATCH 0/6] initramfs: reduce buffer footprint David Disseldorp
2024-10-15 13:11 ` [RFC PATCH 1/6] vsprintf: add simple_strntoul David Disseldorp
2024-10-15 13:11 ` [RFC PATCH 2/6] initramfs: avoid memcpy for hex header fields David Disseldorp
2024-10-15 13:12 ` [RFC PATCH 3/6] initramfs: remove extra symlink path buffer David Disseldorp
2024-10-15 13:12 ` [RFC PATCH 4/6] initramfs: merge header_buf and name_buf David Disseldorp
2024-10-15 13:12 ` [RFC PATCH 5/6] initramfs: reuse buf for built-in and bootloader initramfs David Disseldorp
2024-10-15 13:12 ` David Disseldorp [this message]
2024-10-15 23:34 ` [RFC PATCH 0/6] initramfs: reduce buffer footprint Al Viro
2024-10-16 2:42 ` David Disseldorp
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=20241015133016.23468-7-ddiss@suse.de \
--to=ddiss@suse.de \
--cc=brauner@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.