summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Gray <bgray@linux.ibm.com>2023-03-21 00:05:34 +0100
committerMasahiro Yamada <masahiroy@kernel.org>2023-04-16 10:37:01 +0200
commit735faf92fb06d083ddcf6cfcf6665666dea5dcc1 (patch)
tree08a78a75e3996ab7ad007d267f94f921f2ab12f0
parentinitramfs: Check negative timestamp to prevent broken cpio archive (diff)
downloadlinux-735faf92fb06d083ddcf6cfcf6665666dea5dcc1.tar.xz
linux-735faf92fb06d083ddcf6cfcf6665666dea5dcc1.zip
init/initramfs: Fix argument forwarding to panic() in panic_show_mem()
Forwarding variadic argument lists can't be done by passing a va_list to a function with signature foo(...) (as panic() has). It ends up interpreting the va_list itself as a single argument instead of iterating it. printf() happily accepts it of course, leading to corrupt output. Convert panic_show_mem() to a macro to allow forwarding the arguments. The function is trivial enough that it's easier than trying to introduce a vpanic() variant. Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
-rw-r--r--init/initramfs.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/init/initramfs.c b/init/initramfs.c
index f6c112e30bd4..e7a01c2ccd1b 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -60,15 +60,8 @@ static void __init error(char *x)
message = x;
}
-static void panic_show_mem(const char *fmt, ...)
-{
- va_list args;
-
- show_mem(0, NULL);
- va_start(args, fmt);
- panic(fmt, args);
- va_end(args);
-}
+#define panic_show_mem(fmt, ...) \
+ ({ show_mem(0, NULL); panic(fmt, ##__VA_ARGS__); })
/* link hash */