All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: linux-kernel@vger.kernel.org
Subject: [RFC 8/8] params: don't use alloc_bootmem for saved_command_line
Date: Mon, 1 Dec 2008 23:26:59 +1030	[thread overview]
Message-ID: <200812012327.00134.rusty@rustcorp.com.au> (raw)


We only need it for /proc, so just use kstrdup().

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 init/main.c |   24 +++++++-----------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/init/main.c b/init/main.c
--- a/init/main.c
+++ b/init/main.c
@@ -123,8 +123,6 @@ char __initdata boot_command_line[COMMAN
 char __initdata boot_command_line[COMMAND_LINE_SIZE];
 /* Untouched saved command line (eg. for /proc) */
 char *saved_command_line;
-/* Command line for parameter parsing */
-static char *static_command_line;
 
 static char *execute_command;
 static char *ramdisk_execute_command;
@@ -453,20 +451,6 @@ static void __init smp_init(void)
 #endif
 
 /*
- * We need to store the untouched command line for future reference.
- * We also need to store the touched command line since the parameter
- * parsing is performed in place, and we should allow a component to
- * store reference of name/value for future reference.
- */
-static void __init setup_command_line(void)
-{
-	saved_command_line = alloc_bootmem(strlen (boot_command_line)+1);
-	static_command_line = alloc_bootmem(strlen (boot_command_line)+1);
-	strcpy (saved_command_line, boot_command_line);
-	strcpy (static_command_line, boot_command_line);
-}
-
-/*
  * We need to finalize in a non-__init function or else race conditions
  * between the root thread and the init thread may cause start_kernel to
  * be reaped by free_initmem before the root thread has proceeded to
@@ -547,6 +531,8 @@ void __init __weak arch_get_boot_command
 /* Ideally, this would take a 'const char *cmdline' param. */
 asmlinkage void __init start_kernel(void)
 {
+	char *static_command_line;
+
 	arch_get_boot_command_line();
 	parse_args("Core params", boot_command_line, __start___core_param,
 		   __stop___core_param - __start___core_param,
@@ -582,7 +568,6 @@ asmlinkage void __init start_kernel(void
 	printk(linux_banner);
 	setup_arch();
 	mm_init_owner(&init_mm, &init_task);
-	setup_command_line();
 
 	unwind_setup();
 	setup_per_cpu_areas();
@@ -603,6 +588,9 @@ asmlinkage void __init start_kernel(void
 	build_all_zonelists();
 	page_alloc_init();
 	printk(KERN_NOTICE "Kernel command line: %s\n", boot_command_line);
+	/* param parsing can keep pointers to the commandline. */
+	static_command_line = alloc_bootmem(strlen(boot_command_line)+1);
+	strcpy(static_command_line, boot_command_line);
 	parse_args("Booting kernel", static_command_line, __start___param,
 		   __stop___param - __start___param,
 		   &unknown_bootoption, false);
@@ -704,6 +692,8 @@ asmlinkage void __init start_kernel(void
 
 	ftrace_init();
 
+	saved_command_line = kstrdup(boot_command_line, GFP_KERNEL);
+
 	/* Do the rest non-__init'ed, we're now alive */
 	rest_init();
 }



                 reply	other threads:[~2008-12-01 12:58 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200812012327.00134.rusty@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.