]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
kernel/panic: mark init_taint_buf as __initdata and panic instead of warning in alloc...
authorRio <rioo.tsukatsukii@gmail.com>
Mon, 23 Feb 2026 03:59:14 +0000 (09:29 +0530)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 28 Mar 2026 04:19:33 +0000 (21:19 -0700)
However there's a convention of assuming that __init-time allocations
cannot fail.  Because if a kmalloc() were to fail at this time, the kernel
is hopelessly messed up anyway.  So simply panic() if that kmalloc failed,
then make that 350-byte buffer __initdata.

Link: https://lkml.kernel.org/r/20260223035914.4033-1-rioo.tsukatsukii@gmail.com
Signed-off-by: Rio <rioo.tsukatsukii@gmail.com>
Cc: Joel Granados <joel.granados@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Wang Jinchao <wangjinchao600@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/panic.c

index 5d498ff8a18b3c12c5e46b3eb7ded77098647300..20feada5319d4103fa09dd9a9ca233e8c6ca4547 100644 (file)
@@ -865,8 +865,8 @@ static void print_tainted_seq(struct seq_buf *s, bool verbose)
  */
 #define INIT_TAINT_BUF_MAX 350
 
-static char init_taint_buf[INIT_TAINT_BUF_MAX];
-static char *taint_buf = init_taint_buf;
+static char init_taint_buf[INIT_TAINT_BUF_MAX] __initdata;
+static char *taint_buf __refdata = init_taint_buf;
 static size_t taint_buf_size = INIT_TAINT_BUF_MAX;
 
 static __init int alloc_taint_buf(void)
@@ -887,11 +887,7 @@ static __init int alloc_taint_buf(void)
        buf = kmalloc(size, GFP_KERNEL);
 
        if (!buf) {
-               /* Allocation may fail; this warning explains possibly
-                * truncated taint strings
-                */
-               pr_warn_once("taint string buffer allocation failed, using fallback buffer\n");
-               return 0;
+               panic("Failed to allocate taint string buffer");
        }
 
        taint_buf = buf;