[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <163166721027.510331.6820619440348067061.stgit@devnote2>
Date: Wed, 15 Sep 2021 09:53:30 +0900
From: Masami Hiramatsu <mhiramat@...nel.org>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Mike Rapoport <rppt@...nel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
LKML <linux-kernel@...r.kernel.org>,
Ingo Molnar <mingo@...nel.org>,
Masami Hiramatsu <mhiramat@...nel.org>,
Linux-MM <linux-mm@...ck.org>, Vlastimil Babka <vbabka@...e.cz>
Subject: [PATCH v2 4/5] bootconfig: Free copied bootconfig data after boot
Free copied bootconfig data after booting kernel because that
data will not be used anymore.
commit 40caa127f3c7 ("init: bootconfig: Remove all bootconfig
data when the init memory is removed") freed the bootconfig
xbc_node array after booting kernel, but forgot to free the
bootconfig data itself. This fixes that to free the bootconfig
data too.
Fixes: 40caa127f3c7 ("init: bootconfig: Remove all bootconfig data when the init memory is removed")
Signed-off-by: Masami Hiramatsu <mhiramat@...nel.org>
---
Changes in v2:
- Split memblock leak fix because it fixes another commit.
- Use memblock_free_ptr()
---
init/main.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/init/main.c b/init/main.c
index 4f059fde1df0..0148152652e9 100644
--- a/init/main.c
+++ b/init/main.c
@@ -319,6 +319,8 @@ static void * __init get_boot_config_from_initrd(u32 *_size, u32 *_csum)
#ifdef CONFIG_BOOT_CONFIG
static char xbc_namebuf[XBC_KEYLEN_MAX] __initdata;
+static void *init_xbc_data_copy __initdata;
+static phys_addr_t init_xbc_data_size __initdata;
#define rest(dst, end) ((end) > (dst) ? (end) - (dst) : 0)
@@ -466,12 +468,17 @@ static void __init setup_boot_config(void)
extra_command_line = xbc_make_cmdline("kernel");
/* Also, "init." keys are init arguments */
extra_init_args = xbc_make_cmdline("init");
+ init_xbc_data_copy = copy;
+ init_xbc_data_size = size + 1;
}
return;
}
static void __init exit_boot_config(void)
{
+ if (!init_xbc_data_copy)
+ return;
+ memblock_free_ptr(init_xbc_data_copy, init_xbc_data_size);
xbc_destroy_all();
}
Powered by blists - more mailing lists