On Tue, Mar 02, 2021 at 09:08AM -0500, Steven Rostedt wrote: > On Tue, 2 Mar 2021 14:49:42 +0100 > Geert Uytterhoeven <ge...@linux-m68k.org> wrote: > > > > So this is basically a kernel tinyfication issue, right? Is that still > > > pursued > > > today? Are there better config options suitable for this than > > > CONFIG_DEBUG_KERNEL? > > > > As long as I hear about products running Linux on SoCs with 10 MiB of > > SRAM, I think the answer is yes. > > I'm not immediately aware of a better config option. There are no more > > TINY options left, and EXPERT selects DEBUG_KERNEL. > > Since the trace_printk() uses the same type of notice, I wonder if we could > make this into a helper function and just pass in the top part. > > + pr_warn("**********************************************************\n"); > + pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); > + pr_warn("** **\n"); > > > + pr_warn("** This system shows unhashed kernel memory addresses **\n"); > + pr_warn("** via the console, logs, and other interfaces. This **\n"); > + pr_warn("** might reduce the security of your system. **\n"); > > Only the above section is really unique. The rest can be a boiler plate.
Short of procedurally generating some of these strings, I was experimenting with the below. Would that be reasonable? Thanks, -- Marco ------ >8 ------ From: Marco Elver <el...@google.com> Date: Tue, 2 Mar 2021 15:07:28 +0100 Subject: [PATCH] lib/vsprintf: reduce space taken by no_hash_pointers warning Move the no_hash_pointers warning string into __initconst section, so that it is discarded after init. Remove common start/end characters and remove repeated lines from the array. Link: https://lkml.kernel.org/r/camuhmdulkzcjevvjcp7txzldwljsqphe8hqxhnztni9bjt_...@mail.gmail.com Reported-by: Geert Uytterhoeven <ge...@linux-m68k.org> Signed-off-by: Marco Elver <el...@google.com> --- lib/vsprintf.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 41ddc353ebb8..1e63b43955f6 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -2094,23 +2094,27 @@ char *fwnode_string(char *buf, char *end, struct fwnode_handle *fwnode, bool no_hash_pointers __ro_after_init; EXPORT_SYMBOL_GPL(no_hash_pointers); +static const char no_hash_pointers_warning[9][55] __initconst = { + "******************************************************", + " NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE ", + " ", + " This system shows unhashed kernel memory addresses ", + " via the console, logs, and other interfaces. This ", + " might reduce the security of your system. ", + " If you see this message and you are not debugging ", + " the kernel, report this immediately to your system ", + " administrator! ", +}; + static int __init no_hash_pointers_enable(char *str) { + const int lines[] = { 0, 1, 2, 3, 4, 5, 2, 6, 7, 8, 2, 1, 0 }; + int i; + no_hash_pointers = true; - pr_warn("**********************************************************\n"); - pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); - pr_warn("** **\n"); - pr_warn("** This system shows unhashed kernel memory addresses **\n"); - pr_warn("** via the console, logs, and other interfaces. This **\n"); - pr_warn("** might reduce the security of your system. **\n"); - pr_warn("** **\n"); - pr_warn("** If you see this message and you are not debugging **\n"); - pr_warn("** the kernel, report this immediately to your system **\n"); - pr_warn("** administrator! **\n"); - pr_warn("** **\n"); - pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); - pr_warn("**********************************************************\n"); + for (i = 0; i < ARRAY_SIZE(lines); i++) + pr_warn("**%s**\n", no_hash_pointers_warning[lines[i]]); return 0; } -- 2.30.1.766.gb4fecdf3b7-goog