Current implementation stores a static command-line
buffer allocated to COMMAND_LINE_SIZE size. Most
architectures stores two copies of this buffer, one
for future reference and one for parameter parsing.
In order to allow a greater command-line size, these
buffers should be dynamically allocated or marked
as init disposable buffers, so unused memory can be
released.
This patch renames the static saved_command_line
variable into boot_command_line adding __initdata
attribute, so that it can be disposed after
initialization. This rename is required so applications
that use saved_command_line will not be affected
by this change.
It reintroduces saved_command_line as dynamically
allocated buffer to match the data in boot_command_line.
It also mark secondary command-line buffer as __initdata,
and copies it to dynamically allocated static_command_line
buffer components may hold reference to it after
initialization.
This patch is for linux-2.6.18-rc5-mm1 and is divided to
target each architecture. I could not check this in any
architecture so please forgive me if I got it wrong.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
--
VGER BF report: U 0.5
1. Rename saved_command_line into boot_command_line, mark
as init disposable.
2. Add dynamic allocated saved_command_line.
3. Add dynamic allocated static_command_line.
4. During startup copy:
boot_command_line into saved_command_line.
arch command_line into static_command_line.
5. Parse static_command_line and not
arch command_line, so arch command_line may
be freed.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/include/linux/init.h
linux-2.6.18-rc5-mm1/include/linux/init.h
--- linux-2.6.18-rc5-mm1.org/include/linux/init.h 2006-09-03
18:57:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/include/linux/init.h 2006-09-03
20:30:12.000000000 +0300
@@ -67,7 +67,8 @@ extern initcall_t __con_initcall_start[]
extern initcall_t __security_initcall_start[],
__security_initcall_end[];
/* Defined in init/main.c */
-extern char saved_command_line[];
+extern char __initdata boot_command_line[];
+extern char *saved_command_line;
extern unsigned int reset_devices;
/* used by init/main.c */
@@ -145,7 +146,7 @@ struct obs_kernel_param {
#define early_param(str, fn) \
__setup_param(str, fn, fn, 1)
-/* Relies on saved_command_line being set */
+/* Relies on boot_command_line being set */
void __init parse_early_param(void);
#endif /* __ASSEMBLY__ */
diff -urNp linux-2.6.18-rc5-mm1.org/init/main.c
linux-2.6.18-rc5-mm1/init/main.c
--- linux-2.6.18-rc5-mm1.org/init/main.c 2006-09-03
18:57:18.000000000 +0300
+++ linux-2.6.18-rc5-mm1/init/main.c 2006-09-03
23:27:30.000000000 +0300
@@ -116,8 +116,12 @@ extern void time_init(void);
void (*late_time_init)(void);
extern void softirq_init(void);
-/* Untouched command line (eg. for /proc) saved by
arch-specific code. */
-char saved_command_line[COMMAND_LINE_SIZE];
+/* Untouched command line saved by arch-specific code. */
+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;
@@ -400,6 +404,20 @@ 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(char *command_line)
+{
+ saved_command_line = alloc_bootmem(strlen
(boot_command_line)+1);
+ static_command_line = alloc_bootmem(strlen
(command_line)+1);
+ strcpy (saved_command_line, boot_command_line);
+ strcpy (static_command_line, 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
@@ -453,7 +471,7 @@ void __init parse_early_param(void)
return;
/* All fall through to do_early_param. */
- strlcpy(tmp_cmdline, saved_command_line,
COMMAND_LINE_SIZE);
+ strlcpy(tmp_cmdline, boot_command_line,
COMMAND_LINE_SIZE);
parse_args("early options", tmp_cmdline, NULL, 0,
do_early_param);
done = 1;
}
@@ -503,6 +521,7 @@ asmlinkage void __init start_kernel(void
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
+ setup_command_line(command_line);
setup_per_cpu_areas();
smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
@@ -519,9 +538,9 @@ asmlinkage void __init start_kernel(void
preempt_disable();
build_all_zonelists();
page_alloc_init();
- printk(KERN_NOTICE "Kernel command line: %s\n",
saved_command_line);
+ printk(KERN_NOTICE "Kernel command line: %s\n",
boot_command_line);
parse_early_param();
- parse_args("Booting kernel", command_line,
__start___param,
+ parse_args("Booting kernel", static_command_line,
__start___param,
__stop___param - __start___param,
&unknown_bootoption);
sort_main_extable();
--
VGER BF report: H 0.00112924
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/avr32/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/avr32/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/avr32/kernel/setup.c
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/avr32/kernel/setup.c
2006-09-03 20:58:45.000000000 +0300
@@ -44,7 +44,7 @@ struct avr32_cpuinfo boot_cpu_data = {
};
EXPORT_SYMBOL(boot_cpu_data);
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
/*
* Should be more than enough, but if you have a _really_
complex
@@ -94,7 +94,7 @@ static unsigned long __initdata fbmem_si
static void __init parse_cmdline_early(char **cmdline_p)
{
- char *to = command_line, *from = saved_command_line;
+ char *to = command_line, *from = boot_command_line;
int len = 0;
char c = ' ';
@@ -226,7 +226,7 @@ __tagtable(ATAG_MEM, parse_tag_mem);
static int __init parse_tag_cmdline(struct tag *tag)
{
- strlcpy(saved_command_line, tag->u.cmdline.cmdline,
COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, tag->u.cmdline.cmdline,
COMMAND_LINE_SIZE);
return 0;
}
__tagtable(ATAG_CMDLINE, parse_tag_cmdline);
--
VGER BF report: H 0.156751
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/arm26/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/arm26/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/arm26/kernel/setup.c
2006-09-03 18:56:47.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/arm26/kernel/setup.c
2006-09-03 20:58:31.000000000 +0300
@@ -80,7 +80,7 @@ unsigned long phys_initrd_size __initdat
static struct meminfo meminfo __initdata = { 0, };
static struct proc_info_item proc_info;
static const char *machine_name;
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
static char default_command_line[COMMAND_LINE_SIZE]
__initdata = CONFIG_CMDLINE;
@@ -492,8 +492,8 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) &_edata;
init_mm.brk = (unsigned long) &_end;
- memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
parse_cmdline(&meminfo, cmdline_p, from);
bootmem_init(&meminfo);
paging_init(&meminfo);
--
VGER BF report: U 0.499997
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/cris/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/cris/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/cris/kernel/setup.c
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/cris/kernel/setup.c 2006-09-03
20:58:59.000000000 +0300
@@ -29,7 +29,7 @@ struct screen_info screen_info;
extern int root_mountflags;
extern char _etext, _edata, _end;
-char cris_command_line[COMMAND_LINE_SIZE] = { 0, };
+char __initdata cris_command_line[COMMAND_LINE_SIZE] = {
0, };
extern const unsigned long text_start, edata; /* set by the
linker script */
extern unsigned long dram_start, dram_end;
@@ -153,8 +153,8 @@ setup_arch(char **cmdline_p)
#endif
/* Save command line for future references. */
- memcpy(saved_command_line, cris_command_line,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE - 1] = '\0';
+ memcpy(boot_command_line, cris_command_line,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE - 1] = '\0';
/* give credit for the CRIS port */
show_etrax_copyright();
--
VGER BF report: U 0.491704
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/h8300/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/h8300/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/h8300/kernel/setup.c
2006-09-03 18:55:06.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/h8300/kernel/setup.c
2006-09-03 20:59:41.000000000 +0300
@@ -54,7 +54,7 @@ unsigned long rom_length;
unsigned long memory_start;
unsigned long memory_end;
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
extern int _stext, _etext, _sdata, _edata, _sbss, _ebss,
_end;
extern int _ramstart, _ramend;
@@ -154,8 +154,8 @@ void __init setup_arch(char **cmdline_p)
#endif
/* Keep a copy of command line */
*cmdline_p = &command_line[0];
- memcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = 0;
+ memcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = 0;
#ifdef DEBUG
if (strlen(*cmdline_p))
--
VGER BF report: H 0.448381
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/m68k/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/m68k/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/m68k/kernel/setup.c
2006-09-03 18:55:09.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/m68k/kernel/setup.c 2006-09-03
19:47:58.000000000 +0300
@@ -241,7 +241,7 @@ void __init setup_arch(char **cmdline_p)
init_mm.brk = (unsigned long) &_end;
*cmdline_p = m68k_command_line;
- memcpy(saved_command_line, *cmdline_p, CL_SIZE);
+ memcpy(boot_command_line, *cmdline_p, CL_SIZE);
/* Parse the command line for arch-specific options.
* For the m68k, this is currently only "debug=xxx" to
enable printing
--
VGER BF report: H 0.000401896
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/parisc/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/parisc/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/parisc/kernel/setup.c
2006-09-03 18:55:13.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/parisc/kernel/setup.c
2006-09-03 21:01:13.000000000 +0300
@@ -45,7 +45,7 @@
#include <asm/io.h>
#include <asm/setup.h>
-char command_line[COMMAND_LINE_SIZE] __read_mostly;
+char __initdata command_line[COMMAND_LINE_SIZE]
__read_mostly;
/* Intended for ccio/sba/cpu statistics
under /proc/bus/{runway|gsc} */
struct proc_dir_entry * proc_runway_root __read_mostly =
NULL;
@@ -71,9 +71,9 @@ void __init setup_cmdline(char **cmdline
/* boot_args[0] is free-mem start, boot_args[1] is ptr to
command line */
if (boot_args[0] < 64) {
/* called from hpux boot loader */
- saved_command_line[0] = '\0';
+ boot_command_line[0] = '\0';
} else {
- strcpy(saved_command_line, (char *)__va(boot_args[1]));
+ strcpy(boot_command_line, (char *)__va(boot_args[1]));
#ifdef CONFIG_BLK_DEV_INITRD
if (boot_args[2] != 0) /* did palo pass us a ramdisk? */
@@ -84,7 +84,7 @@ void __init setup_cmdline(char **cmdline
#endif
}
- strcpy(command_line, saved_command_line);
+ strcpy(command_line, boot_command_line);
*cmdline_p = command_line;
}
diff -urNp linux-2.6.18-rc5-mm1.org/arch/parisc/mm/init.c
linux-2.6.18-rc5-mm1/arch/parisc/mm/init.c
--- linux-2.6.18-rc5-mm1.org/arch/parisc/mm/init.c
2006-09-03 18:56:50.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/parisc/mm/init.c 2006-09-03
23:52:54.000000000 +0300
@@ -77,12 +77,12 @@ static void __init mem_limit_func(void)
{
char *cp, *end;
unsigned long limit;
- extern char saved_command_line[];
+ extern char __initdata boot_command_line[];
/* We need this before __setup() functions are called */
limit = MAX_MEM;
- for (cp = saved_command_line; *cp; ) {
+ for (cp = boot_command_line; *cp; ) {
if (memcmp(cp, "mem=", 4) == 0) {
cp += 4;
limit = memparse(cp, &end);
--
VGER BF report: U 0.494487
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/sparc64/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/sparc64/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/sparc64/kernel/setup.c
2006-09-03 18:55:19.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sparc64/kernel/setup.c
2006-09-03 19:47:59.000000000 +0300
@@ -327,7 +327,7 @@ void __init setup_arch(char **cmdline_p)
{
/* Initialize PROM console and command line. */
*cmdline_p = prom_getbootargs();
- strcpy(saved_command_line, *cmdline_p);
+ strcpy(boot_command_line, *cmdline_p);
if (tlb_type == hypervisor)
printk("ARCH: SUN4V\n");
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/sparc64/kernel/sparc64_ksyms.c
linux-2.6.18-rc5-mm1/arch/sparc64/kernel/sparc64_ksyms.c
---
linux-2.6.18-rc5-mm1.org/arch/sparc64/kernel/sparc64_ksyms.c
2006-09-03 18:55:19.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sparc64/kernel/sparc64_ksyms.c
2006-09-03 19:47:59.000000000 +0300
@@ -253,7 +253,7 @@ EXPORT_SYMBOL(prom_getproplen);
EXPORT_SYMBOL(prom_getproperty);
EXPORT_SYMBOL(prom_node_has_property);
EXPORT_SYMBOL(prom_setprop);
-EXPORT_SYMBOL(saved_command_line);
+EXPORT_SYMBOL(boot_command_line);
EXPORT_SYMBOL(prom_finddevice);
EXPORT_SYMBOL(prom_feval);
EXPORT_SYMBOL(prom_getbool);
--
VGER BF report: U 0.478104
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/ppc/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/ppc/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/ppc/kernel/setup.c
2006-09-03 18:55:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ppc/kernel/setup.c 2006-09-03
19:47:58.000000000 +0300
@@ -538,7 +538,7 @@ void __init setup_arch(char **cmdline_p)
init_mm.brk = (unsigned long) klimit;
/* Save unparsed command line copy for /proc/cmdline */
- strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
*cmdline_p = cmd_line;
parse_early_param();
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/lopec.c
linux-2.6.18-rc5-mm1/arch/ppc/platforms/lopec.c
--- linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/lopec.c
2006-09-03 18:55:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ppc/platforms/lopec.c
2006-09-03 19:47:58.000000000 +0300
@@ -344,7 +344,7 @@ lopec_setup_arch(void)
if (bootargs != NULL) {
strcpy(cmd_line, bootargs);
/* again.. */
- strcpy(saved_command_line, cmd_line);
+ strcpy(boot_command_line, cmd_line);
}
}
#endif
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/pplus.c
linux-2.6.18-rc5-mm1/arch/ppc/platforms/pplus.c
--- linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/pplus.c
2006-09-03 18:55:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ppc/platforms/pplus.c
2006-09-03 19:47:58.000000000 +0300
@@ -592,7 +592,7 @@ static void __init pplus_setup_arch(void
if (bootargs != NULL) {
strcpy(cmd_line, bootargs);
/* again.. */
- strcpy(saved_command_line, cmd_line);
+ strcpy(boot_command_line, cmd_line);
}
}
#endif
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/prep_setup.c
linux-2.6.18-rc5-mm1/arch/ppc/platforms/prep_setup.c
--- linux-2.6.18-rc5-mm1.org/arch/ppc/platforms/prep_setup.c
2006-09-03 18:55:16.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ppc/platforms/prep_setup.c
2006-09-03 19:47:58.000000000 +0300
@@ -634,7 +634,7 @@ static void __init prep_init_sound(void)
/*
* Find a way to push these informations to the cs4232
driver
* Give it out with printk, when not in cmd_line?
- * Append it to cmd_line and saved_command_line?
+ * Append it to cmd_line and boot_command_line?
* Format is cs4232=io,irq,dma,dma2
*/
}
@@ -897,7 +897,7 @@ prep_setup_arch(void)
if (bootargs != NULL) {
strcpy(cmd_line, bootargs);
/* again.. */
- strcpy(saved_command_line, cmd_line);
+ strcpy(boot_command_line, cmd_line);
}
}
--
VGER BF report: H 0.237512
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/v850/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/v850/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/v850/kernel/setup.c
2006-09-03 18:55:19.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/v850/kernel/setup.c 2006-09-03
21:02:53.000000000 +0300
@@ -42,7 +42,7 @@ extern char _root_fs_image_start __attri
extern char _root_fs_image_end __attribute__ ((__weak__));
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
/* Memory not used by the kernel. */
static unsigned long total_ram_pages;
@@ -64,8 +64,8 @@ void __init setup_arch (char **cmdline)
{
/* Keep a copy of command line */
*cmdline = command_line;
- memcpy (saved_command_line, command_line,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE - 1] = '\0';
+ memcpy (boot_command_line, command_line,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE - 1] = '\0';
console_verbose ();
--
VGER BF report: H 0.131365
On Mon, Sep 04, 2006 at 12:52:14AM +0300, Alon Bar-Lev wrote:
> @@ -116,8 +116,12 @@ extern void time_init(void);
> void (*late_time_init)(void);
> extern void softirq_init(void);
>
> -/* Untouched command line (eg. for /proc) saved by
> arch-specific code. */
> -char saved_command_line[COMMAND_LINE_SIZE];
> +/* Untouched command line saved by arch-specific code. */
> +char __initdata boot_command_line[COMMAND_LINE_SIZE];
Your patch is wordwrapped.
Also, what was the point of all this? Was there some discussion that
this would be useful?
--
VGER BF report: H 0.0043987
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/um/include/user_util.h
linux-2.6.18-rc5-mm1/arch/um/include/user_util.h
--- linux-2.6.18-rc5-mm1.org/arch/um/include/user_util.h
2006-06-18 04:49:35.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/um/include/user_util.h
2006-09-03 23:47:03.000000000 +0300
@@ -38,7 +38,7 @@ extern unsigned long long highmem;
extern char host_info[];
-extern char saved_command_line[];
+extern char __initdata boot_command_line[];
extern unsigned long _stext, _etext, _sdata, _edata,
__bss_start, _end;
extern unsigned long _unprotected_end;
diff -urNp linux-2.6.18-rc5-mm1.org/arch/um/kernel/um_arch.c
linux-2.6.18-rc5-mm1/arch/um/kernel/um_arch.c
--- linux-2.6.18-rc5-mm1.org/arch/um/kernel/um_arch.c
2006-09-03 18:56:51.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/um/kernel/um_arch.c 2006-09-03
19:47:59.000000000 +0300
@@ -482,7 +482,7 @@ void __init setup_arch(char **cmdline_p)
atomic_notifier_chain_register(&panic_notifier_list,
&panic_exit_notifier);
paging_init();
- strlcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
*cmdline_p = command_line;
setup_hostinfo();
}
--
VGER BF report: H 0.000270213
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/include/asm-x86_64/bootsetup.h
linux-2.6.18-rc5-mm1/include/asm-x86_64/bootsetup.h
--- linux-2.6.18-rc5-mm1.org/include/asm-x86_64/bootsetup.h
2006-06-18 04:49:35.000000000 +0300
+++ linux-2.6.18-rc5-mm1/include/asm-x86_64/bootsetup.h
2006-09-03 19:47:59.000000000 +0300
@@ -31,7 +31,7 @@ extern char x86_boot_params[BOOT_PARAM_S
#define EDD_MBR_SIG_NR (*(unsigned char *)
(PARAM+EDD_MBR_SIG_NR_BUF))
#define EDD_MBR_SIGNATURE ((unsigned int *)
(PARAM+EDD_MBR_SIG_BUF))
#define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF))
-#define COMMAND_LINE saved_command_line
+#define COMMAND_LINE boot_command_line
#define RAMDISK_IMAGE_START_MASK 0x07FF
#define RAMDISK_PROMPT_FLAG 0x8000
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/x86_64/kernel/head64.c
linux-2.6.18-rc5-mm1/arch/x86_64/kernel/head64.c
--- linux-2.6.18-rc5-mm1.org/arch/x86_64/kernel/head64.c
2006-09-03 18:56:53.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/x86_64/kernel/head64.c
2006-09-03 23:47:39.000000000 +0300
@@ -34,7 +34,7 @@ static void __init clear_bss(void)
#define OLD_CL_BASE_ADDR 0x90000
#define OLD_CL_OFFSET 0x90022
-extern char saved_command_line[];
+extern char __initdata boot_command_line[];
static void __init copy_bootdata(char *real_mode_data)
{
@@ -50,7 +50,7 @@ static void __init copy_bootdata(char *r
new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET;
}
command_line = (char *) ((u64)(new_data));
- memcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
+ memcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
}
void __init x86_64_start_kernel(char * real_mode_data)
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/x86_64/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/x86_64/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/x86_64/kernel/setup.c
2006-09-03 18:56:53.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/x86_64/kernel/setup.c
2006-09-03 20:55:20.000000000 +0300
@@ -100,7 +100,7 @@ EXPORT_SYMBOL_GPL(edid_info);
extern int root_mountflags;
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
struct resource standard_io_resources[] = {
{ .name = "dma1", .start = 0x00, .end = 0x1f,
@@ -376,7 +376,7 @@ void __init setup_arch(char **cmdline_p)
early_identify_cpu(&boot_cpu_data);
- strlcpy(command_line, saved_command_line,
COMMAND_LINE_SIZE);
+ strlcpy(command_line, boot_command_line,
COMMAND_LINE_SIZE);
*cmdline_p = command_line;
parse_early_param();
--
VGER BF report: U 0.499555
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/sparc/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/sparc/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/sparc/kernel/setup.c
2006-09-03 18:55:18.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sparc/kernel/setup.c
2006-09-03 19:47:59.000000000 +0300
@@ -258,7 +258,7 @@ void __init setup_arch(char **cmdline_p)
/* Initialize PROM console and command line. */
*cmdline_p = prom_getbootargs();
- strcpy(saved_command_line, *cmdline_p);
+ strcpy(boot_command_line, *cmdline_p);
/* Set sparc_cpu_model */
sparc_cpu_model = sun_unknown;
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/sparc/kernel/sparc_ksyms.c
linux-2.6.18-rc5-mm1/arch/sparc/kernel/sparc_ksyms.c
--- linux-2.6.18-rc5-mm1.org/arch/sparc/kernel/sparc_ksyms.c
2006-09-03 18:55:18.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sparc/kernel/sparc_ksyms.c
2006-09-03 19:47:59.000000000 +0300
@@ -235,7 +235,7 @@ EXPORT_SYMBOL(prom_getproplen);
EXPORT_SYMBOL(prom_getproperty);
EXPORT_SYMBOL(prom_node_has_property);
EXPORT_SYMBOL(prom_setprop);
-EXPORT_SYMBOL(saved_command_line);
+EXPORT_SYMBOL(boot_command_line);
EXPORT_SYMBOL(prom_apply_obio_ranges);
EXPORT_SYMBOL(prom_feval);
EXPORT_SYMBOL(prom_getbool);
--
VGER BF report: H 0.0020444
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/legacy_serial.c
linux-2.6.18-rc5-mm1/arch/powerpc/kernel/legacy_serial.c
---
linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/legacy_serial.c
2006-09-03 18:56:50.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/powerpc/kernel/legacy_serial.c
2006-09-03 19:47:58.000000000 +0300
@@ -498,7 +498,7 @@ static int __init check_legacy_serial_co
DBG(" -> check_legacy_serial_console()\n");
/* The user has requested a console so this is already set
up. */
- if (strstr(saved_command_line, "console=")) {
+ if (strstr(boot_command_line, "console=")) {
DBG(" console was specified !\n");
return -EBUSY;
}
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/prom.c
linux-2.6.18-rc5-mm1/arch/powerpc/kernel/prom.c
--- linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/prom.c
2006-09-03 18:56:50.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/powerpc/kernel/prom.c
2006-09-03 19:47:58.000000000 +0300
@@ -909,7 +909,7 @@ void __init early_init_devtree(void *par
of_scan_flat_dt(early_init_dt_scan_memory, NULL);
/* Save command line for /proc/cmdline and then parse
parameters */
- strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
parse_early_param();
/* Reserve LMB regions used by kernel, initrd, dt, etc...
*/
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/udbg.c
linux-2.6.18-rc5-mm1/arch/powerpc/kernel/udbg.c
--- linux-2.6.18-rc5-mm1.org/arch/powerpc/kernel/udbg.c
2006-09-03 18:55:13.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/powerpc/kernel/udbg.c
2006-09-03 19:47:58.000000000 +0300
@@ -146,7 +146,7 @@ void __init disable_early_printk(void)
{
if (!early_console_initialized)
return;
- if (strstr(saved_command_line, "udbg-immortal")) {
+ if (strstr(boot_command_line, "udbg-immortal")) {
printk(KERN_INFO "early console immortal !\n");
return;
}
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/powerpc/platforms/powermac/setup.c
linux-2.6.18-rc5-mm1/arch/powerpc/platforms/powermac/setup.c
---
linux-2.6.18-rc5-mm1.org/arch/powerpc/platforms/powermac/setup.c
2006-09-03 18:56:51.000000000 +0300
+++
linux-2.6.18-rc5-mm1/arch/powerpc/platforms/powermac/setup.c
2006-09-03 19:47:58.000000000 +0300
@@ -505,8 +505,8 @@ void note_bootable_part(dev_t dev, int p
if ((goodness <= current_root_goodness) &&
ROOT_DEV != DEFAULT_ROOT_DEVICE)
return;
- p = strstr(saved_command_line, "root=");
- if (p != NULL && (p == saved_command_line || p[-1]
== ' '))
+ p = strstr(boot_command_line, "root=");
+ if (p != NULL && (p == boot_command_line || p[-1] == ' '))
return;
if (!found_boot) {
--
VGER BF report: U 0.498893
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/s390/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/s390/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/s390/kernel/setup.c
2006-09-03 18:56:51.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/s390/kernel/setup.c 2006-09-03
19:47:58.000000000 +0300
@@ -626,7 +626,7 @@ setup_arch(char **cmdline_p)
#endif /* CONFIG_64BIT */
/* Save unparsed command line copy for /proc/cmdline */
- strlcpy(saved_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
*cmdline_p = COMMAND_LINE;
*(*cmdline_p + COMMAND_LINE_SIZE - 1) = '\0';
--
VGER BF report: H 0.448735
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/xtensa/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/xtensa/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/xtensa/kernel/setup.c
2006-09-03 18:55:20.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/xtensa/kernel/setup.c
2006-09-03 21:03:10.000000000 +0300
@@ -80,7 +80,7 @@ extern unsigned long loops_per_jiffy;
/* Command line specified as configuration option. */
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
#ifdef CONFIG_CMDLINE_BOOL
static char default_command_line[COMMAND_LINE_SIZE]
__initdata = CONFIG_CMDLINE;
@@ -255,8 +255,8 @@ void __init setup_arch(char **cmdline_p)
extern int mem_reserve(unsigned long, unsigned long, int);
extern void bootmem_init(void);
- memcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
*cmdline_p = command_line;
/* Reserve some memory regions */
--
VGER BF report: H 0.0953499
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/sh/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/sh/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/sh/kernel/setup.c
2006-09-03 18:56:51.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sh/kernel/setup.c 2006-09-03
21:02:18.000000000 +0300
@@ -88,7 +88,7 @@ static struct sh_machine_vector* __init
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000
-static char command_line[COMMAND_LINE_SIZE] = { 0, };
+static char __initdata command_line[COMMAND_LINE_SIZE] = {
0, };
struct resource standard_io_resources[] = {
{ "dma1", 0x00, 0x1f },
@@ -125,8 +125,8 @@ static inline void parse_cmdline (char *
int len = 0;
/* Save unparsed command line copy for /proc/cmdline */
- memcpy(saved_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START;
memory_end = memory_start + __MEMORY_SIZE;
--
VGER BF report: U 0.499656
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/sh64/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/sh64/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/sh64/kernel/setup.c
2006-09-03 18:55:18.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/sh64/kernel/setup.c 2006-09-03
21:02:25.000000000 +0300
@@ -83,7 +83,7 @@ extern int sh64_tlb_init(void);
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000
-static char command_line[COMMAND_LINE_SIZE] = { 0, };
+static char __initdata command_line[COMMAND_LINE_SIZE] = {
0, };
unsigned long long memory_start = CONFIG_MEMORY_START;
unsigned long long memory_end = CONFIG_MEMORY_START +
(CONFIG_MEMORY_SIZE_IN_MB * 1024 * 1024);
@@ -95,8 +95,8 @@ static inline void parse_mem_cmdline (ch
int len = 0;
/* Save unparsed command line copy for /proc/cmdline */
- memcpy(saved_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
for (;;) {
/*
--
VGER BF report: U 0.49998
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/m68knommu/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/m68knommu/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/m68knommu/kernel/setup.c
2006-09-03 18:55:10.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/m68knommu/kernel/setup.c
2006-09-03 21:00:57.000000000 +0300
@@ -47,7 +47,7 @@ unsigned long memory_end;
EXPORT_SYMBOL(memory_start);
EXPORT_SYMBOL(memory_end);
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
/* setup some dummy routines */
static void dummy_waitbut(void)
@@ -234,8 +234,8 @@ void setup_arch(char **cmdline_p)
/* Keep a copy of command line */
*cmdline_p = &command_line[0];
- memcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = 0;
+ memcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = 0;
#ifdef DEBUG
if (strlen(*cmdline_p))
--
VGER BF report: H 0.0160245
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/mips/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/mips/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/mips/kernel/setup.c
2006-09-03 18:55:11.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/mips/kernel/setup.c 2006-09-03
19:47:58.000000000 +0300
@@ -145,7 +145,7 @@ static void __init print_memory_map(void
static inline void parse_cmdline_early(void)
{
- char c = ' ', *to = command_line, *from =
saved_command_line;
+ char c = ' ', *to = command_line, *from =
boot_command_line;
unsigned long start_at, mem_size;
int len = 0;
int usermem = 0;
@@ -473,7 +473,7 @@ static void __init arch_mem_init(char **
plat_mem_setup();
strlcpy(command_line, arcs_cmdline, sizeof(command_line));
- strlcpy(saved_command_line, command_line,
COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, command_line,
COMMAND_LINE_SIZE);
*cmdline_p = command_line;
--
VGER BF report: H 0.0445688
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/m32r/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/m32r/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/m32r/kernel/setup.c
2006-09-03 18:55:09.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/m32r/kernel/setup.c 2006-09-03
21:00:37.000000000 +0300
@@ -64,7 +64,7 @@ struct screen_info screen_info = {
extern int root_mountflags;
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
static struct resource data_resource = {
.name = "Kernel data",
@@ -95,8 +95,8 @@ static __inline__ void parse_mem_cmdline
int usermem = 0;
/* Save unparsed command line copy for /proc/cmdline */
- memcpy(saved_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, COMMAND_LINE,
COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
memory_start = (unsigned
long)CONFIG_MEMORY_START+PAGE_OFFSET;
memory_end = memory_start+(unsigned
long)CONFIG_MEMORY_SIZE;
--
VGER BF report: H 0.305908
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp
linux-2.6.18-rc5-mm1.org/arch/alpha/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/alpha/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/alpha/kernel/setup.c
2006-09-03 18:56:47.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/alpha/kernel/setup.c
2006-09-03 20:57:36.000000000 +0300
@@ -120,7 +120,7 @@ static void get_sysnames(unsigned long,
char **, char **);
static void determine_cpu_caches (unsigned int);
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
/*
* The format of "screen_info" is strange, and due to early
@@ -541,7 +541,7 @@ setup_arch(char **cmdline_p)
} else {
strlcpy(command_line, COMMAND_LINE, sizeof command_line);
}
- strcpy(saved_command_line, command_line);
+ strcpy(boot_command_line, command_line);
*cmdline_p = command_line;
/*
@@ -583,7 +583,7 @@ setup_arch(char **cmdline_p)
}
/* Replace the command line, now that we've killed it with
strsep. */
- strcpy(command_line, saved_command_line);
+ strcpy(command_line, boot_command_line);
/* If we want SRM console printk echoing early, do it now.
*/
if (alpha_using_srm && srmcons_output) {
--
VGER BF report: H 1.91147e-06
On Monday 04 September 2006 01:10, Matthew Wilcox wrote:
> Your patch is wordwrapped.
Thanks!
My mistake!
I will send again.
> Also, what was the point of all this? Was there some
> discussion that this would be useful?
Yes. We are trying to make kernel parameter size much larger
than 256 bytes (at least for x86).
And some developers commented that small systems will be
affected if static buffer enlarged.
Best Regards,
Alon Bar-Lev.
--
VGER BF report: H 2.02507e-07
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/i386/kernel/head.S
linux-2.6.18-rc5-mm1/arch/i386/kernel/head.S
--- linux-2.6.18-rc5-mm1.org/arch/i386/kernel/head.S
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/i386/kernel/head.S 2006-09-03
19:47:58.000000000 +0300
@@ -97,7 +97,7 @@ ENTRY(startup_32)
movzwl OLD_CL_OFFSET,%esi
addl $(OLD_CL_BASE_ADDR),%esi
2:
- movl $(saved_command_line - __PAGE_OFFSET),%edi
+ movl $(boot_command_line - __PAGE_OFFSET),%edi
movl $(COMMAND_LINE_SIZE/4),%ecx
rep
movsl
diff -urNp linux-2.6.18-rc5-mm1.org/arch/i386/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/i386/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/i386/kernel/setup.c
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/i386/kernel/setup.c 2006-09-03
20:54:39.000000000 +0300
@@ -145,7 +145,7 @@ unsigned long saved_videomode;
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
unsigned char __initdata boot_params[PARAM_SIZE];
@@ -1396,7 +1396,7 @@ void __init setup_arch(char
**cmdline_p)
print_memory_map("user");
}
- strlcpy(command_line, saved_command_line,
COMMAND_LINE_SIZE);
+ strlcpy(command_line, boot_command_line,
COMMAND_LINE_SIZE);
*cmdline_p = command_line;
max_low_pfn = setup_memory();
--
VGER BF report: U 0.49222
Rename saved_command_line into boot_command_line.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/efi.c
linux-2.6.18-rc5-mm1/arch/ia64/kernel/efi.c
--- linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/efi.c
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ia64/kernel/efi.c 2006-09-03
23:52:15.000000000 +0300
@@ -413,11 +413,11 @@ efi_init (void)
efi_char16_t *c16;
u64 efi_desc_size;
char *cp, vendor[100] = "unknown";
- extern char saved_command_line[];
+ extern char __initdata boot_command_line[];
int i;
/* it's too early to be able to use the standard kernel
command line support... */
- for (cp = saved_command_line; *cp; ) {
+ for (cp = boot_command_line; *cp; ) {
if (memcmp(cp, "mem=", 4) == 0) {
mem_limit = memparse(cp + 4, &cp);
} else if (memcmp(cp, "max_addr=", 9) == 0) {
diff -urNp linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/sal.c
linux-2.6.18-rc5-mm1/arch/ia64/kernel/sal.c
--- linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/sal.c
2006-09-03 18:55:08.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ia64/kernel/sal.c 2006-09-03
23:42:12.000000000 +0300
@@ -194,9 +194,9 @@ static void __init
chk_nointroute_opt(void)
{
char *cp;
- extern char saved_command_line[];
+ extern char __initdata boot_command_line[];
- for (cp = saved_command_line; *cp; ) {
+ for (cp = boot_command_line; *cp; ) {
if (memcmp(cp, "nointroute", 10) == 0) {
no_int_routing = 1;
printk ("no_int_routing on\n");
diff -urNp linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/ia64/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/ia64/kernel/setup.c
2006-09-03 18:56:48.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/ia64/kernel/setup.c 2006-09-03
19:47:58.000000000 +0300
@@ -260,7 +260,7 @@ reserve_memory (void)
* after a kernel panic.
*/
{
- char *from = strstr(saved_command_line, "crashkernel=");
+ char *from = strstr(boot_command_line, "crashkernel=");
if (from) {
unsigned long size, base;
size = memparse(from + 12, &from);
@@ -433,7 +433,7 @@ setup_arch (char **cmdline_p)
ia64_patch_vtop((u64) __start___vtop_patchlist, (u64)
__end___vtop_patchlist);
*cmdline_p = __va(ia64_boot_param->command_line);
- strlcpy(saved_command_line, *cmdline_p,
COMMAND_LINE_SIZE);
+ strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
efi_init();
io_port_init();
@@ -514,7 +514,7 @@ setup_arch (char **cmdline_p)
#ifdef CONFIG_CRASH_DUMP
{
- char *from = strstr(saved_command_line, "elfcorehdr=");
+ char *from = strstr(boot_command_line, "elfcorehdr=");
if (from)
elfcorehdr_addr = memparse(from+11, &from);
--
VGER BF report: H 0.028445
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/arm/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/arm/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/arm/kernel/setup.c
2006-09-03 18:56:47.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/arm/kernel/setup.c 2006-09-03
20:58:23.000000000 +0300
@@ -106,7 +106,7 @@ unsigned long phys_initrd_size __initdat
static struct meminfo meminfo __initdata = { 0, };
static const char *cpu_name;
static const char *machine_name;
-static char command_line[COMMAND_LINE_SIZE];
+static char __initdata command_line[COMMAND_LINE_SIZE];
static char default_command_line[COMMAND_LINE_SIZE]
__initdata = CONFIG_CMDLINE;
static union { char c[4]; unsigned long l; } endian_test
__initdata = { { 'l', '?', '?', 'b' } };
@@ -803,8 +803,8 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) &_edata;
init_mm.brk = (unsigned long) &_end;
- memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
- saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
+ memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
+ boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
parse_cmdline(cmdline_p, from);
paging_init(&meminfo, mdesc);
request_standard_resources(&meminfo, mdesc);
--
VGER BF report: H 0.364495
1. Rename saved_command_line into boot_command_line.
2. Set command_line as __initdata.
Signed-off-by: Alon Bar-Lev <[email protected]>
---
diff -urNp linux-2.6.18-rc5-mm1.org/arch/frv/kernel/setup.c
linux-2.6.18-rc5-mm1/arch/frv/kernel/setup.c
--- linux-2.6.18-rc5-mm1.org/arch/frv/kernel/setup.c
2006-09-03 18:55:06.000000000 +0300
+++ linux-2.6.18-rc5-mm1/arch/frv/kernel/setup.c 2006-09-03
20:59:28.000000000 +0300
@@ -112,7 +112,7 @@ unsigned long __initdata num_mappedpages
struct cpuinfo_frv __nongprelbss boot_cpu_data;
-char command_line[COMMAND_LINE_SIZE];
+char __initdata command_line[COMMAND_LINE_SIZE];
char __initdata redboot_command_line[COMMAND_LINE_SIZE];
#ifdef CONFIG_PM
@@ -764,7 +764,7 @@ void __init setup_arch(char **cmdline_p)
printk("uClinux FR-V port done by Red Hat Inc
<[email protected]>\n");
#endif
- memcpy(saved_command_line, redboot_command_line,
COMMAND_LINE_SIZE);
+ memcpy(boot_command_line, redboot_command_line,
COMMAND_LINE_SIZE);
determine_cpu();
determine_clocks(1);
@@ -805,7 +805,7 @@ void __init setup_arch(char **cmdline_p)
#endif
/* deal with the command line - RedBoot may have passed
one to the kernel */
- memcpy(command_line, saved_command_line,
sizeof(command_line));
+ memcpy(command_line, boot_command_line,
sizeof(command_line));
*cmdline_p = &command_line[0];
parse_cmdline_early(command_line);
--
VGER BF report: H 0.0196113
Alon Bar-Lev writes:
> Current implementation stores a static command-line
> buffer allocated to COMMAND_LINE_SIZE size. Most
> architectures stores two copies of this buffer, one
> for future reference and one for parameter parsing.
Under what circumstances do we actually need a command line of more
than 256 bytes?
It seems to me that if 256 bytes isn't enough, we should take a deep
breath, step back, and think about whether there might be a better way
to pass whatever information it is that's using up so much of the
command line.
Paul.
--
VGER BF report: H 0
On 9/3/06, Alon Bar-Lev <[email protected]> wrote:
>
> This patch is for linux-2.6.18-rc5-mm1 and is divided to
> target each architecture. I could not check this in any
> architecture so please forgive me if I got it wrong.
You didn't test this on _any_ architecture? It's a bit bold to send
out a patch like this without at least testing it on one architecture.
josh
--
VGER BF report: H 0
Hi.
On Mon, 2006-09-04 at 09:33 +1000, Paul Mackerras wrote:
> Alon Bar-Lev writes:
>
> > Current implementation stores a static command-line
> > buffer allocated to COMMAND_LINE_SIZE size. Most
> > architectures stores two copies of this buffer, one
> > for future reference and one for parameter parsing.
>
> Under what circumstances do we actually need a command line of more
> than 256 bytes?
>
> It seems to me that if 256 bytes isn't enough, we should take a deep
> breath, step back, and think about whether there might be a better way
> to pass whatever information it is that's using up so much of the
> command line.
I agree. The current limit varies widely, most often being 256 or 512,
but sometimes also 896 (s390!) or 1024 (arm, arm26, parisc) or 4096
(uml). Would users and developers of those arches care to enlighten? Why
896?
Regards,
Nigel
--
VGER BF report: H 4.24346e-05
On 9/4/06, Paul Mackerras <[email protected]> wrote:
> Alon Bar-Lev writes:
>
> > Current implementation stores a static command-line
> > buffer allocated to COMMAND_LINE_SIZE size. Most
> > architectures stores two copies of this buffer, one
> > for future reference and one for parameter parsing.
>
> Under what circumstances do we actually need a command line of more
> than 256 bytes?
Sure!
With static modules options, splash support, disk encryption, suspend,
local initrd settings we need much more than 256 bytes...
> It seems to me that if 256 bytes isn't enough, we should take a deep
> breath, step back, and think about whether there might be a better way
> to pass whatever information it is that's using up so much of the
> command line.
But the command line is a wonderful tool... It allows you to compile
the same kernel/initramfs and install it on different machines,
modifying only the boot loader configuration file. It also allows
several boot profiles at boot loader level, without the need to
replaces files or have complex initrd...
So it worth modifying current implementation.
Best Regards,
Alon Bar-Lev.
--
VGER BF report: H 0
On 9/4/06, Josh Boyer <[email protected]> wrote:
> On 9/3/06, Alon Bar-Lev <[email protected]> wrote:
> >
> > This patch is for linux-2.6.18-rc5-mm1 and is divided to
> > target each architecture. I could not check this in any
> > architecture so please forgive me if I got it wrong.
>
> You didn't test this on _any_ architecture? It's a bit bold to send
> out a patch like this without at least testing it on one architecture.
I tested it on i386.
I am truly sorry... But I don't have access to other architectures.
Best Regards,
Alon Bar-Lev.
--
VGER BF report: H 0
> Under what circumstances do we actually need a command line of more
> than 256 bytes?
A common case is auto-installation of distributions. The auto installers
tends to get a lot of information passed using the kernel command line.
> It seems to me that if 256 bytes isn't enough, we should take a deep
> breath, step back, and think about whether there might be a better way
> to pass whatever information it is that's using up so much of the
> command line.
See it as the kernel's environment and it starts making more sense.
In theory another environment could be added, but then the command like
does the job already, except that it is a bit short sometimes.
-Andi
--
VGER BF report: H 0
On Mon, 2006-09-04 at 12:50 +1000, Nigel Cunningham wrote:
> I agree. The current limit varies widely, most often being 256 or 512,
> but sometimes also 896 (s390!) or 1024 (arm, arm26, parisc) or 4096
> (uml). Would users and developers of those arches care to enlighten? Why
> 896?
Simple. Between 0x10480 and 0x10800 there are 0x380 bytes available.
That makes 895 characters for the commandline. Completly obvious, how
could you miss it ? ;-)
The reason is our initial address space layout for the very first kernel
images. Now it is hard to changed because the different ipl tools rely
on the layout. We choose to add a few more bytes than 256 because on
s390 we potentially have many devices. The dasd= parameter can really be
big.
--
blue skies,
Martin.
Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH
"Reality continues to ruin my life." - Calvin.
--
VGER BF report: H 0
On 9/4/06, Martin Schwidefsky <[email protected]> wrote:
> The reason is our initial address space layout for the very first kernel
> images. Now it is hard to changed because the different ipl tools rely
> on the layout. We choose to add a few more bytes than 256 because on
> s390 we potentially have many devices. The dasd= parameter can really be
> big.
Thanks for the explanation... I've been curios as well :)
Can you please check if this patch is OK in s390 environment?
Best Regards,
Alon Bar-Lev.
--
VGER BF report: H 0
(trimming CC list)
Paul Mackerras <[email protected]> ha scritto:
Alon Bar-Lev writes:
>
>> Current implementation stores a static command-line
>> buffer allocated to COMMAND_LINE_SIZE size. Most
>> architectures stores two copies of this buffer, one
>> for future reference and one for parameter parsing.
>
> Under what circumstances do we actually need a command line of more
> than 256 bytes?
>
> It seems to me that if 256 bytes isn't enough, we should take a deep
> breath, step back, and think about whether there might be a better way
> to pass whatever information it is that's using up so much of the
> command line.
Well, if you want to set a parameter of a builtin module you have to
use:
modulename.parameter=whatever
which can use a lot of space... I suppose that with an "everything
builtin" kernel and a few modules to tune you can get near the limit.
Luca
--
Home: http://kronoz.cjb.net
Il tempo speso
a coltivare sogni
non ? sprecato.
On 9/4/06, Alon Bar-Lev <[email protected]> wrote:
> On 9/4/06, Josh Boyer <[email protected]> wrote:
> > On 9/3/06, Alon Bar-Lev <[email protected]> wrote:
> > >
> > > This patch is for linux-2.6.18-rc5-mm1 and is divided to
> > > target each architecture. I could not check this in any
> > > architecture so please forgive me if I got it wrong.
> >
> > You didn't test this on _any_ architecture? It's a bit bold to send
> > out a patch like this without at least testing it on one architecture.
>
> I tested it on i386.
> I am truly sorry... But I don't have access to other architectures.
Oh, well that's a bit different. Not many people have access to all
architectures, but at least you've tested it on one of them. :)
josh
Matthew Wilcox wrote:
> On Mon, Sep 04, 2006 at 12:52:14AM +0300, Alon Bar-Lev wrote:
>> @@ -116,8 +116,12 @@ extern void time_init(void);
>> void (*late_time_init)(void);
>> extern void softirq_init(void);
>>
>> -/* Untouched command line (eg. for /proc) saved by
>> arch-specific code. */
>> -char saved_command_line[COMMAND_LINE_SIZE];
>> +/* Untouched command line saved by arch-specific code. */
>> +char __initdata boot_command_line[COMMAND_LINE_SIZE];
>
> Your patch is wordwrapped.
>
> Also, what was the point of all this? Was there some discussion that
> this would be useful?
>
Assuming that this works as described, the benefits are obvious. In most
cases I would expect the memory saved to be more than the patch takes,
and the patch is init code. Having the possibility of having very long
command lines is bound to be useful on occasion, particularly when using
drivers with option-names-way-too-long.
I agree that this wouldn't make my top 200 list of wanted features, but
it's here, it saves a little memory, it adds a capability someone will
find useful, why not use it? It appears to be a small win in every case.
--
Bill Davidsen <[email protected]>
Obscure bug of 2004: BASH BUFFER OVERFLOW - if bash is being run by a
normal user and is setuid root, with the "vi" line edit mode selected,
and the character set is "big5," an off-by-one errors occurs during
wildcard (glob) expansion.