rpms/kexec-tools/devel kexec-tools-1.102pre-cmdline-length.patch, NONE, 1.1 kexec-tools.spec, 1.112, 1.113

Neil Horman (nhorman) fedora-extras-commits at redhat.com
Wed Apr 16 15:22:45 UTC 2008


Author: nhorman

Update of /cvs/extras/rpms/kexec-tools/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27971

Modified Files:
	kexec-tools.spec 
Added Files:
	kexec-tools-1.102pre-cmdline-length.patch 
Log Message:
Fix command line length bug w/ upstream patch

kexec-tools-1.102pre-cmdline-length.patch:

--- NEW FILE kexec-tools-1.102pre-cmdline-length.patch ---
diff -up kexec-tools-testing-20070330/include/x86/x86-linux.h.orig kexec-tools-testing-20070330/include/x86/x86-linux.h
--- kexec-tools-testing-20070330/include/x86/x86-linux.h.orig	2007-03-30 00:34:36.000000000 -0400
+++ kexec-tools-testing-20070330/include/x86/x86-linux.h	2008-03-13 11:21:45.000000000 -0400
@@ -144,18 +144,22 @@ struct x86_linux_param_header {
 	/* 2.04+ */
 	uint32_t kernel_alignment;		/* 0x230 */
 	uint8_t  relocatable_kernel;		/* 0x234 */
-	uint8_t  reserved15[0x2d0 - 0x235];	/* 0x230 */
+	uint8_t  reserved15[3];			/* 0x235 */
+	uint32_t cmdline_size;			/* 0x238 */
+	uint32_t hardware_subarch;		/* 0x23C */
+	uint64_t hardware_subarch_data;		/* 0x240 */
+	uint8_t  reserved16[0x2d0 - 0x248];	/* 0x248 */
 #endif
 	struct e820entry e820_map[E820MAX];	/* 0x2d0 */
 						/* 0x550 */
-#define COMMAND_LINE_SIZE 256
+#define COMMAND_LINE_SIZE 2048 
 };
 
 struct x86_linux_faked_param_header {
 	struct x86_linux_param_header hdr;	/* 0x00 */
-	uint8_t reserved16[688];		/* 0x550 */
-	uint8_t command_line[COMMAND_LINE_SIZE]; /* 0x800 */
-	uint8_t reserved17[1792];		/* 0x900 - 0x1000 */
+	uint8_t reserved17[0xab0];		/* 0x550 */
+	uint8_t command_line[COMMAND_LINE_SIZE]; /* 0x1000 */
+	uint8_t reserved18[0x200];		/* 0x1800 - 0x2000 */
 };
 
 struct x86_linux_header {
@@ -206,7 +210,11 @@ struct x86_linux_header {
 #else
 	uint32_t kernel_alignment;		/* 0x230 */
 	uint8_t  relocatable_kernel;		/* 0x234 */
-	uint8_t  tail[32*1024 - 0x235];		/* 0x230 */
+	uint8_t  reserved6[3];			/* 0x235 */
+	uint32_t cmdline_size;                  /* 0x238 */
+	uint32_t hardware_subarch;              /* 0x23C */
+	uint64_t hardware_subarch_data;         /* 0x240 */
+	uint8_t  tail[32*1024 - 0x248];		/* 0x248 */
 #endif
 } PACKED;
 
diff -up kexec-tools-testing-20070330/kexec/arch/i386/kexec-bzImage.c.orig kexec-tools-testing-20070330/kexec/arch/i386/kexec-bzImage.c
--- kexec-tools-testing-20070330/kexec/arch/i386/kexec-bzImage.c.orig	2008-03-13 11:19:03.000000000 -0400
+++ kexec-tools-testing-20070330/kexec/arch/i386/kexec-bzImage.c	2008-03-13 11:21:45.000000000 -0400
@@ -134,6 +134,17 @@ int do_bzImage_load(struct kexec_info *i
 		return -1;
 	}
 
+	if (setup_header.protocol_version >= 0x0206) {
+		if (command_line_len > setup_header.cmdline_size) {
+			printf("Kernel command line too long for kernel!\n");
+			return -1;
+		}
+	} else {
+		if (command_line_len > 255) {
+			printf("WARNING: This kernel may only support 255 byte command lines\n");
+		}
+	}
+
 	if (setup_header.protocol_version >= 0x0205) {
 		relocatable_kernel = setup_header.relocatable_kernel;
 		dfprintf(stdout, "bzImage is relocatable\n");
diff -up kexec-tools-testing-20070330/kexec/arch/i386/x86-linux-setup.c.orig kexec-tools-testing-20070330/kexec/arch/i386/x86-linux-setup.c
--- kexec-tools-testing-20070330/kexec/arch/i386/x86-linux-setup.c.orig	2007-03-30 00:34:36.000000000 -0400
+++ kexec-tools-testing-20070330/kexec/arch/i386/x86-linux-setup.c	2008-03-13 11:21:45.000000000 -0400
@@ -38,8 +38,9 @@ void init_linux_parameters(struct x86_li
 
 	/* Boot block magic */
 	memcpy(real_mode->header_magic, "HdrS", 4);
-	real_mode->protocol_version = 0x0203;
+	real_mode->protocol_version = 0x0206;
 	real_mode->initrd_addr_max = DEFAULT_INITRD_ADDR_MAX;
+	real_mode->cmdline_size = COMMAND_LINE_SIZE;
 }
 
 void setup_linux_bootloader_parameters(


Index: kexec-tools.spec
===================================================================
RCS file: /cvs/extras/rpms/kexec-tools/devel/kexec-tools.spec,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -r1.112 -r1.113
--- kexec-tools.spec	25 Mar 2008 12:32:52 -0000	1.112
+++ kexec-tools.spec	16 Apr 2008 15:22:03 -0000	1.113
@@ -1,6 +1,6 @@
 Name: kexec-tools
 Version: 1.102pre 
-Release: 8%{?dist}
+Release: 9%{?dist}
 License: GPL
 Group: Applications/System
 Summary: The kexec/kdump userspace component.
@@ -68,6 +68,7 @@
 Patch604: kexec-tools-1.102pre-disable-kexec-test.patch
 Patch605: kexec-tools-1.102pre-vmcoreinfo.patch
 Patch606: kexec-tools-1.102pre-makedumpfile-makefile.patch
+Patch607: kexec-tools-1.102pre-cmdline-length.patch
 
 %description
 kexec-tools provides /sbin/kexec binary that facilitates a new
@@ -99,6 +100,7 @@
 %patch604 -p1
 %patch605 -p1
 %patch606 -p1
+%patch607 -p1
 
 tar -z -x -v -f %{SOURCE13}
 
@@ -227,6 +229,9 @@
 %doc kexec-kdump-howto.txt
 
 %changelog
+* Wed Apr 16 2008 Neil Horman <nhorman at redhat.com> - 1.102pre-9
+- Fix cmdline length issue
+
 * Tue Mar 25 2008 Neil Horman <nhorman at redhat.com> - 1.102pre-8
 - Fixing ARCH definition for bz 438661
 




More information about the fedora-extras-commits mailing list