mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
kernel/panic: mark init_taint_buf as __initdata and panic instead of warning in alloc_taint_buf()
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>
This commit is contained in:
@@ -865,8 +865,8 @@ static void print_tainted_seq(struct seq_buf *s, bool verbose)
|
|||||||
*/
|
*/
|
||||||
#define INIT_TAINT_BUF_MAX 350
|
#define INIT_TAINT_BUF_MAX 350
|
||||||
|
|
||||||
static char init_taint_buf[INIT_TAINT_BUF_MAX];
|
static char init_taint_buf[INIT_TAINT_BUF_MAX] __initdata;
|
||||||
static char *taint_buf = init_taint_buf;
|
static char *taint_buf __refdata = init_taint_buf;
|
||||||
static size_t taint_buf_size = INIT_TAINT_BUF_MAX;
|
static size_t taint_buf_size = INIT_TAINT_BUF_MAX;
|
||||||
|
|
||||||
static __init int alloc_taint_buf(void)
|
static __init int alloc_taint_buf(void)
|
||||||
@@ -887,11 +887,7 @@ static __init int alloc_taint_buf(void)
|
|||||||
buf = kmalloc(size, GFP_KERNEL);
|
buf = kmalloc(size, GFP_KERNEL);
|
||||||
|
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
/* Allocation may fail; this warning explains possibly
|
panic("Failed to allocate taint string buffer");
|
||||||
* truncated taint strings
|
|
||||||
*/
|
|
||||||
pr_warn_once("taint string buffer allocation failed, using fallback buffer\n");
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
taint_buf = buf;
|
taint_buf = buf;
|
||||||
|
|||||||
Reference in New Issue
Block a user