diff options
-rw-r--r-- | main/linux-grsec/APKBUILD | 6 | ||||
-rw-r--r-- | main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908090749.patch (renamed from main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908051916.patch) | 335 |
2 files changed, 255 insertions, 86 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD index 08e386e29b..625989df1b 100644 --- a/main/linux-grsec/APKBUILD +++ b/main/linux-grsec/APKBUILD @@ -4,7 +4,7 @@ _flavor=grsec pkgname=linux-${_flavor} pkgver=2.6.30.4 _kernver=2.6.30 -pkgrel=2 +pkgrel=3 pkgdesc="Linux kernel with grsecurity" url=http://grsecurity.net depends="mkinitfs" @@ -13,7 +13,7 @@ _config=${config:-kernelconfig} install="$pkgname.post-install $pkgname.post-upgrade" source="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_kernver.tar.bz2 ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-$pkgver.bz2 - grsecurity-2.1.14-2.6.30.4-200908051916.patch + grsecurity-2.1.14-2.6.30.4-200908090749.patch linux-nbma-mroute-v4-2.6.30.diff net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch $_config @@ -113,7 +113,7 @@ dev() { md5sums="7a80058a6382e5108cdb5554d1609615 linux-2.6.30.tar.bz2 d0fc44b54ba5953140b3f2aa9a1f2580 patch-2.6.30.4.bz2 -9a0d6d6ce67289e24c6e3ef4441b6388 grsecurity-2.1.14-2.6.30.4-200908051916.patch +78f3778d96c03006ba0b4c96ed885cd6 grsecurity-2.1.14-2.6.30.4-200908090749.patch 7420c0b1095335990313656b114e1379 linux-nbma-mroute-v4-2.6.30.diff ca05fd252783b82e01610e775cf56498 net-next-2.6.git-5ef12d98a19254ee5dc851bd83e214b43ec1f725.patch 60adb085be0ab268c0f27279ae2b2bab kernelconfig diff --git a/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908051916.patch b/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908090749.patch index 5d0902c211..3fff0bbb81 100644 --- a/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908051916.patch +++ b/main/linux-grsec/grsecurity-2.1.14-2.6.30.4-200908090749.patch @@ -7086,7 +7086,7 @@ diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess_64.h linux-2.6.30.4/arch/ #endif /* _ASM_X86_UACCESS_64_H */ diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess.h linux-2.6.30.4/arch/x86/include/asm/uaccess.h --- linux-2.6.30.4/arch/x86/include/asm/uaccess.h 2009-07-30 20:32:40.364705510 -0400 -+++ linux-2.6.30.4/arch/x86/include/asm/uaccess.h 2009-07-30 20:32:47.926577259 -0400 ++++ linux-2.6.30.4/arch/x86/include/asm/uaccess.h 2009-08-09 07:48:47.926451868 -0400 @@ -8,8 +8,10 @@ #include <linux/thread_info.h> #include <linux/prefetch.h> @@ -7111,22 +7111,32 @@ diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess.h linux-2.6.30.4/arch/x86 #define segment_eq(a, b) ((a).seg == (b).seg) -@@ -187,9 +194,12 @@ extern int __get_user_bad(void); +@@ -183,13 +190,21 @@ extern int __get_user_bad(void); + asm volatile("call __put_user_" #size : "=a" (__ret_pu) \ + : "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx") + +- ++#ifdef CONFIG_X86_32 ++#define _ASM_LOAD_USER_DS(ds) "movw %w" #ds ",%%ds\n" ++#define _ASM_LOAD_KERNEL_DS "pushl %%ss; popl %%ds\n" ++#else ++#define _ASM_LOAD_USER_DS(ds) ++#define _ASM_LOAD_KERNEL_DS ++#endif #ifdef CONFIG_X86_32 #define __put_user_asm_u64(x, addr, err, errret) \ - asm volatile("1: movl %%eax,0(%2)\n" \ - "2: movl %%edx,4(%2)\n" \ -+ asm volatile(" movw %w5,%%ds\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(5) \ + "1: movl %%eax,%%ds:0(%2)\n" \ + "2: movl %%edx,%%ds:4(%2)\n" \ "3:\n" \ -+ " pushl %%ss\n" \ -+ " popl %%ds\n" \ ++ _ASM_LOAD_KERNEL_DS \ ".section .fixup,\"ax\"\n" \ "4: movl %3,%0\n" \ " jmp 3b\n" \ -@@ -197,7 +207,8 @@ extern int __get_user_bad(void); +@@ -197,15 +212,18 @@ extern int __get_user_bad(void); _ASM_EXTABLE(1b, 4b) \ _ASM_EXTABLE(2b, 4b) \ : "=r" (err) \ @@ -7135,110 +7145,89 @@ diff -urNp linux-2.6.30.4/arch/x86/include/asm/uaccess.h linux-2.6.30.4/arch/x86 + "r"(__USER_DS)) #define __put_user_asm_ex_u64(x, addr) \ - asm volatile("1: movl %%eax,0(%1)\n" \ -@@ -373,6 +384,22 @@ do { \ - } \ +- asm volatile("1: movl %%eax,0(%1)\n" \ +- "2: movl %%edx,4(%1)\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(2) \ ++ "1: movl %%eax,%%ds:0(%1)\n" \ ++ "2: movl %%edx,%%ds:4(%1)\n" \ + "3:\n" \ ++ _ASM_LOAD_KERNEL_DS \ + _ASM_EXTABLE(1b, 2b - 1b) \ + _ASM_EXTABLE(2b, 3b - 2b) \ +- : : "A" (x), "r" (addr)) ++ : : "A" (x), "r" (addr), "r"(__USER_DS)) + + #define __put_user_x8(x, ptr, __ret_pu) \ + asm volatile("call __put_user_8" : "=a" (__ret_pu) \ +@@ -374,16 +392,18 @@ do { \ } while (0) -+#ifdef CONFIG_X86_32 -+#define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ -+ asm volatile(" movw %w5,%%ds\n" \ -+ "1: mov"itype" %%ds:%2,%"rtype"1\n" \ -+ "2:\n" \ -+ " pushl %%ss\n" \ -+ " popl %%ds\n" \ -+ ".section .fixup,\"ax\"\n" \ -+ "3: movl %3,%0\n" \ -+ " xor"itype" %"rtype"1,%"rtype"1\n" \ -+ " jmp 2b\n" \ -+ ".previous\n" \ -+ _ASM_EXTABLE(1b, 3b) \ -+ : "=r" (err), ltype (x) \ -+ : "m" (__m(addr)), "i" (errret), "0" (err), "r"(__USER_DS)) -+#else #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ - asm volatile("1: mov"itype" %2,%"rtype"1\n" \ +- asm volatile("1: mov"itype" %2,%"rtype"1\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(5) \ ++ "1: mov"itype" %%ds:%2,%"rtype"1\n" \ "2:\n" \ -@@ -384,6 +411,7 @@ do { \ ++ _ASM_LOAD_KERNEL_DS \ + ".section .fixup,\"ax\"\n" \ + "3: mov %3,%0\n" \ + " xor"itype" %"rtype"1,%"rtype"1\n" \ + " jmp 2b\n" \ + ".previous\n" \ _ASM_EXTABLE(1b, 3b) \ - : "=r" (err), ltype(x) \ - : "m" (__m(addr)), "i" (errret), "0" (err)) -+#endif +- : "=r" (err), ltype(x) \ +- : "m" (__m(addr)), "i" (errret), "0" (err)) ++ : "=r" (err), ltype (x) \ ++ : "m" (__m(addr)), "i" (errret), "0" (err), "r"(__USER_DS)) #define __get_user_size_ex(x, ptr, size) \ do { \ -@@ -406,11 +434,22 @@ do { \ - } \ +@@ -407,10 +427,12 @@ do { \ } while (0) -+#ifdef CONFIG_X86_32 -+#define __get_user_asm_ex(x, addr, itype, rtype, ltype) \ -+ asm volatile(" movw %w2,%%ds\n" \ -+ "1: mov"itype" %%ds:%1,%"rtype"0\n" \ -+ "2:\n" \ -+ " pushl %%ss\n" \ -+ " popl %%ds\n" \ -+ _ASM_EXTABLE(1b, 2b - 1b) \ -+ : ltype(x) : "m" (__m(addr)), "r"(__USER_DS)) -+#else #define __get_user_asm_ex(x, addr, itype, rtype, ltype) \ - asm volatile("1: mov"itype" %1,%"rtype"0\n" \ +- asm volatile("1: mov"itype" %1,%"rtype"0\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(2) \ ++ "1: mov"itype" %%ds:%1,%"rtype"0\n" \ "2:\n" \ ++ _ASM_LOAD_KERNEL_DS \ _ASM_EXTABLE(1b, 2b - 1b) \ - : ltype(x) : "m" (__m(addr))) -+#endif +- : ltype(x) : "m" (__m(addr))) ++ : ltype(x) : "m" (__m(addr)), "r"(__USER_DS)) #define __put_user_nocheck(x, ptr, size) \ ({ \ -@@ -437,6 +476,22 @@ struct __large_struct { unsigned long bu - * we do not write to any memory gcc knows about, so there are no +@@ -438,21 +460,26 @@ struct __large_struct { unsigned long bu * aliasing issues. */ -+#ifdef CONFIG_X86_32 -+#define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ -+ asm volatile(" movw %w5,%%ds\n" \ -+ "1: mov"itype" %"rtype"1,%%ds:%2\n" \ -+ "2:\n" \ -+ " pushl %%ss\n" \ -+ " popl %%ds\n" \ -+ ".section .fixup,\"ax\"\n" \ -+ "3: movl %3,%0\n" \ -+ " jmp 2b\n" \ -+ ".previous\n" \ -+ _ASM_EXTABLE(1b, 3b) \ -+ : "=r"(err) \ -+ : ltype (x), "m" (__m(addr)), "i" (errret), "0" (err),\ -+ "r"(__USER_DS)) -+#else #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ - asm volatile("1: mov"itype" %"rtype"1,%2\n" \ +- asm volatile("1: mov"itype" %"rtype"1,%2\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(5) \ ++ "1: mov"itype" %"rtype"1,%%ds:%2\n" \ "2:\n" \ -@@ -447,12 +502,24 @@ struct __large_struct { unsigned long bu ++ _ASM_LOAD_KERNEL_DS \ + ".section .fixup,\"ax\"\n" \ + "3: mov %3,%0\n" \ + " jmp 2b\n" \ + ".previous\n" \ _ASM_EXTABLE(1b, 3b) \ : "=r"(err) \ - : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err)) -+#endif +- : ltype(x), "m" (__m(addr)), "i" (errret), "0" (err)) ++ : ltype (x), "m" (__m(addr)), "i" (errret), "0" (err),\ ++ "r"(__USER_DS)) -+#ifdef CONFIG_X86_32 -+#define __put_user_asm_ex(x, addr, itype, rtype, ltype) \ -+ asm volatile(" movw %w2,%%ds\n" \ -+ "1: mov"itype" %"rtype"0,%%ds:%1\n" \ -+ "2:\n" \ -+ " pushl %%ss\n" \ -+ " popl %%ds\n" \ -+ _ASM_EXTABLE(1b, 2b - 1b) \ -+ : : ltype(x), "m" (__m(addr)), "r"(__USER_DS)) -+#else #define __put_user_asm_ex(x, addr, itype, rtype, ltype) \ - asm volatile("1: mov"itype" %"rtype"0,%1\n" \ +- asm volatile("1: mov"itype" %"rtype"0,%1\n" \ ++ asm volatile(_ASM_LOAD_USER_DS(2) \ ++ "1: mov"itype" %"rtype"0,%%ds:%1\n" \ "2:\n" \ ++ _ASM_LOAD_KERNEL_DS \ _ASM_EXTABLE(1b, 2b - 1b) \ - : : ltype(x), "m" (__m(addr))) -+#endif +- : : ltype(x), "m" (__m(addr))) ++ : : ltype(x), "m" (__m(addr)), "r"(__USER_DS)) /* * uaccess_try and catch -@@ -567,6 +634,7 @@ extern struct movsl_mask { +@@ -567,6 +594,7 @@ extern struct movsl_mask { #define ARCH_HAS_NOCACHE_UACCESS 1 @@ -18854,6 +18843,30 @@ diff -urNp linux-2.6.30.4/drivers/media/video/stk-webcam.c linux-2.6.30.4/driver .open = stk_v4l_vm_open, .close = stk_v4l_vm_close }; +diff -urNp linux-2.6.30.4/drivers/media/video/usbvideo/konicawc.c linux-2.6.30.4/drivers/media/video/usbvideo/konicawc.c +--- linux-2.6.30.4/drivers/media/video/usbvideo/konicawc.c 2009-07-24 17:47:51.000000000 -0400 ++++ linux-2.6.30.4/drivers/media/video/usbvideo/konicawc.c 2009-08-09 07:48:48.178565450 -0400 +@@ -225,7 +225,7 @@ static void konicawc_register_input(stru + int error; + + usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname)); +- strncat(cam->input_physname, "/input0", sizeof(cam->input_physname)); ++ strlcat(cam->input_physname, "/input0", sizeof(cam->input_physname)); + + cam->input = input_dev = input_allocate_device(); + if (!input_dev) { +diff -urNp linux-2.6.30.4/drivers/media/video/usbvideo/quickcam_messenger.c linux-2.6.30.4/drivers/media/video/usbvideo/quickcam_messenger.c +--- linux-2.6.30.4/drivers/media/video/usbvideo/quickcam_messenger.c 2009-07-24 17:47:51.000000000 -0400 ++++ linux-2.6.30.4/drivers/media/video/usbvideo/quickcam_messenger.c 2009-08-09 07:48:48.199403940 -0400 +@@ -89,7 +89,7 @@ static void qcm_register_input(struct qc + int error; + + usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname)); +- strncat(cam->input_physname, "/input0", sizeof(cam->input_physname)); ++ strlcat(cam->input_physname, "/input0", sizeof(cam->input_physname)); + + cam->input = input_dev = input_allocate_device(); + if (!input_dev) { diff -urNp linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c --- linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c 2009-07-24 17:47:51.000000000 -0400 +++ linux-2.6.30.4/drivers/media/video/uvc/uvc_v4l2.c 2009-07-30 09:48:10.034661447 -0400 @@ -18914,6 +18927,95 @@ diff -urNp linux-2.6.30.4/drivers/media/video/zoran/zoran_driver.c linux-2.6.30. .open = zoran_vm_open, .close = zoran_vm_close, }; +diff -urNp linux-2.6.30.4/drivers/message/i2o/i2o_proc.c linux-2.6.30.4/drivers/message/i2o/i2o_proc.c +--- linux-2.6.30.4/drivers/message/i2o/i2o_proc.c 2009-07-24 17:47:51.000000000 -0400 ++++ linux-2.6.30.4/drivers/message/i2o/i2o_proc.c 2009-08-09 07:48:48.246416282 -0400 +@@ -259,13 +259,6 @@ static char *scsi_devices[] = { + "Array Controller Device" + }; + +-static char *chtostr(u8 * chars, int n) +-{ +- char tmp[256]; +- tmp[0] = 0; +- return strncat(tmp, (char *)chars, n); +-} +- + static int i2o_report_query_status(struct seq_file *seq, int block_status, + char *group) + { +@@ -842,8 +835,7 @@ static int i2o_seq_show_ddm_table(struct + + seq_printf(seq, "%-#7x", ddm_table.i2o_vendor_id); + seq_printf(seq, "%-#8x", ddm_table.module_id); +- seq_printf(seq, "%-29s", +- chtostr(ddm_table.module_name_version, 28)); ++ seq_printf(seq, "%-.28s", ddm_table.module_name_version); + seq_printf(seq, "%9d ", ddm_table.data_size); + seq_printf(seq, "%8d", ddm_table.code_size); + +@@ -944,8 +936,8 @@ static int i2o_seq_show_drivers_stored(s + + seq_printf(seq, "%-#7x", dst->i2o_vendor_id); + seq_printf(seq, "%-#8x", dst->module_id); +- seq_printf(seq, "%-29s", chtostr(dst->module_name_version, 28)); +- seq_printf(seq, "%-9s", chtostr(dst->date, 8)); ++ seq_printf(seq, "%-.28s", dst->module_name_version); ++ seq_printf(seq, "%-.8s", dst->date); + seq_printf(seq, "%8d ", dst->module_size); + seq_printf(seq, "%8d ", dst->mpb_size); + seq_printf(seq, "0x%04x", dst->module_flags); +@@ -1276,14 +1268,10 @@ static int i2o_seq_show_dev_identity(str + seq_printf(seq, "Device Class : %s\n", i2o_get_class_name(work16[0])); + seq_printf(seq, "Owner TID : %0#5x\n", work16[2]); + seq_printf(seq, "Parent TID : %0#5x\n", work16[3]); +- seq_printf(seq, "Vendor info : %s\n", +- chtostr((u8 *) (work32 + 2), 16)); +- seq_printf(seq, "Product info : %s\n", +- chtostr((u8 *) (work32 + 6), 16)); +- seq_printf(seq, "Description : %s\n", +- chtostr((u8 *) (work32 + 10), 16)); +- seq_printf(seq, "Product rev. : %s\n", +- chtostr((u8 *) (work32 + 14), 8)); ++ seq_printf(seq, "Vendor info : %.16s\n", (u8 *) (work32 + 2)); ++ seq_printf(seq, "Product info : %.16s\n", (u8 *) (work32 + 6)); ++ seq_printf(seq, "Description : %.16s\n", (u8 *) (work32 + 10)); ++ seq_printf(seq, "Product rev. : %.8s\n", (u8 *) (work32 + 14)); + + seq_printf(seq, "Serial number : "); + print_serial_number(seq, (u8 *) (work32 + 16), +@@ -1328,10 +1316,8 @@ static int i2o_seq_show_ddm_identity(str + } + + seq_printf(seq, "Registering DDM TID : 0x%03x\n", result.ddm_tid); +- seq_printf(seq, "Module name : %s\n", +- chtostr(result.module_name, 24)); +- seq_printf(seq, "Module revision : %s\n", +- chtostr(result.module_rev, 8)); ++ seq_printf(seq, "Module name : %.24s\n", result.module_name); ++ seq_printf(seq, "Module revision : %.8s\n", result.module_rev); + + seq_printf(seq, "Serial number : "); + print_serial_number(seq, result.serial_number, sizeof(result) - 36); +@@ -1362,14 +1348,10 @@ static int i2o_seq_show_uinfo(struct seq + return 0; + } + +- seq_printf(seq, "Device name : %s\n", +- chtostr(result.device_name, 64)); +- seq_printf(seq, "Service name : %s\n", +- chtostr(result.service_name, 64)); +- seq_printf(seq, "Physical name : %s\n", +- chtostr(result.physical_location, 64)); +- seq_printf(seq, "Instance number : %s\n", +- chtostr(result.instance_number, 4)); ++ seq_printf(seq, "Device name : %.64s\n", result.device_name); ++ seq_printf(seq, "Service name : %.64s\n", result.service_name); ++ seq_printf(seq, "Physical name : %.64s\n", result.physical_location); ++ seq_printf(seq, "Instance number : %.4s\n", result.instance_number); + + return 0; + } diff -urNp linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c --- linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c 2009-07-24 17:47:51.000000000 -0400 +++ linux-2.6.30.4/drivers/misc/ibmasm/ibmasmfs.c 2009-07-30 09:48:10.036598829 -0400 @@ -19256,6 +19358,38 @@ diff -urNp linux-2.6.30.4/drivers/pcmcia/yenta_socket.c linux-2.6.30.4/drivers/p }; MODULE_DEVICE_TABLE(pci, yenta_table); +diff -urNp linux-2.6.30.4/drivers/platform/x86/wmi.c linux-2.6.30.4/drivers/platform/x86/wmi.c +--- linux-2.6.30.4/drivers/platform/x86/wmi.c 2009-07-24 17:47:51.000000000 -0400 ++++ linux-2.6.30.4/drivers/platform/x86/wmi.c 2009-08-09 07:48:48.278373587 -0400 +@@ -270,7 +270,7 @@ u32 method_id, const struct acpi_buffer + acpi_status status; + struct acpi_object_list input; + union acpi_object params[3]; +- char method[4] = "WM"; ++ char method[5] = "WM"; + + if (!find_guid(guid_string, &wblock)) + return AE_ERROR; +@@ -328,8 +328,8 @@ struct acpi_buffer *out) + acpi_status status, wc_status = AE_ERROR; + struct acpi_object_list input, wc_input; + union acpi_object wc_params[1], wq_params[1]; +- char method[4]; +- char wc_method[4] = "WC"; ++ char method[5]; ++ char wc_method[5] = "WC"; + + if (!guid_string || !out) + return AE_BAD_PARAMETER; +@@ -410,7 +410,7 @@ const struct acpi_buffer *in) + acpi_handle handle; + struct acpi_object_list input; + union acpi_object params[2]; +- char method[4] = "WS"; ++ char method[5] = "WS"; + + if (!guid_string || !in) + return AE_BAD_DATA; diff -urNp linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c --- linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c 2009-07-24 17:47:51.000000000 -0400 +++ linux-2.6.30.4/drivers/pnp/pnpbios/bioscalls.c 2009-07-30 09:48:10.045642944 -0400 @@ -34794,7 +34928,7 @@ diff -urNp linux-2.6.30.4/include/asm-generic/int-ll64.h linux-2.6.30.4/include/ #define S16_C(x) x diff -urNp linux-2.6.30.4/include/asm-generic/vmlinux.lds.h linux-2.6.30.4/include/asm-generic/vmlinux.lds.h --- linux-2.6.30.4/include/asm-generic/vmlinux.lds.h 2009-07-24 17:47:51.000000000 -0400 -+++ linux-2.6.30.4/include/asm-generic/vmlinux.lds.h 2009-08-05 19:08:00.537007471 -0400 ++++ linux-2.6.30.4/include/asm-generic/vmlinux.lds.h 2009-08-09 07:48:48.045905474 -0400 @@ -121,6 +121,7 @@ .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start_rodata) = .; \ @@ -34803,8 +34937,22 @@ diff -urNp linux-2.6.30.4/include/asm-generic/vmlinux.lds.h linux-2.6.30.4/inclu *(__vermagic) /* Kernel version magic */ \ *(__markers_strings) /* Markers: strings */ \ *(__tracepoints_strings)/* Tracepoints: strings */ \ -@@ -478,8 +479,9 @@ +@@ -468,22 +469,24 @@ + * section in the linker script will go there too. @phdr should have + * a leading colon. + * +- * Note that this macros defines __per_cpu_load as an absolute symbol. ++ * Note that this macros defines per_cpu_load as an absolute symbol. + * If there is no need to put the percpu section at a predetermined + * address, use PERCPU(). + */ + #define PERCPU_VADDR(vaddr, phdr) \ +- VMLINUX_SYMBOL(__per_cpu_load) = .; \ +- .data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \ ++ per_cpu_load = .; \ ++ .data.percpu vaddr : AT(VMLINUX_SYMBOL(per_cpu_load) \ - LOAD_OFFSET) { \ ++ VMLINUX_SYMBOL(__per_cpu_load) = . + per_cpu_load; \ VMLINUX_SYMBOL(__per_cpu_start) = .; \ *(.data.percpu.first) \ - *(.data.percpu.page_aligned) \ @@ -34814,6 +34962,11 @@ diff -urNp linux-2.6.30.4/include/asm-generic/vmlinux.lds.h linux-2.6.30.4/inclu *(.data.percpu.shared_aligned) \ VMLINUX_SYMBOL(__per_cpu_end) = .; \ } phdr \ +- . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data.percpu); ++ . = VMLINUX_SYMBOL(per_cpu_load) + SIZEOF(.data.percpu); + + /** + * PERCPU - define output section for percpu area, simple version diff -urNp linux-2.6.30.4/include/drm/drm_pciids.h linux-2.6.30.4/include/drm/drm_pciids.h --- linux-2.6.30.4/include/drm/drm_pciids.h 2009-07-24 17:47:51.000000000 -0400 +++ linux-2.6.30.4/include/drm/drm_pciids.h 2009-07-30 09:48:10.106233963 -0400 @@ -44559,6 +44712,22 @@ diff -urNp linux-2.6.30.4/sound/usb/usx2y/usx2yhwdeppcm.c linux-2.6.30.4/sound/u .open = snd_usX2Y_hwdep_pcm_vm_open, .close = snd_usX2Y_hwdep_pcm_vm_close, .fault = snd_usX2Y_hwdep_pcm_vm_fault, +diff -urNp linux-2.6.30.4/usr/gen_init_cpio.c linux-2.6.30.4/usr/gen_init_cpio.c +--- linux-2.6.30.4/usr/gen_init_cpio.c 2009-07-24 17:47:51.000000000 -0400 ++++ linux-2.6.30.4/usr/gen_init_cpio.c 2009-08-09 07:48:48.304466902 -0400 +@@ -383,9 +383,10 @@ static char *cpio_replace_env(char *new_ + *env_var = *expanded = '\0'; + strncat(env_var, start + 2, end - start - 2); + strncat(expanded, new_location, start - new_location); +- strncat(expanded, getenv(env_var), PATH_MAX); +- strncat(expanded, end + 1, PATH_MAX); ++ strncat(expanded, getenv(env_var), PATH_MAX - strlen(expanded)); ++ strncat(expanded, end + 1, PATH_MAX - strlen(expanded)); + strncpy(new_location, expanded, PATH_MAX); ++ new_location[PATH_MAX] = 0; + } else + break; + } diff -urNp linux-2.6.30.4/virt/kvm/kvm_main.c linux-2.6.30.4/virt/kvm/kvm_main.c --- linux-2.6.30.4/virt/kvm/kvm_main.c 2009-07-24 17:47:51.000000000 -0400 +++ linux-2.6.30.4/virt/kvm/kvm_main.c 2009-07-30 12:42:02.581987537 -0400 |