packages (GRSECURITY_RAW): kernel/kernel-grsec_full.patch http://www.grsecu...

arekm arekm at pld-linux.org
Wed Dec 16 09:11:14 CET 2009


Author: arekm                        Date: Wed Dec 16 08:11:13 2009 GMT
Module: packages                      Tag: GRSECURITY_RAW
---- Log message:
http://www.grsecurity.net/~spender/grsecurity-2.1.14-2.6.32.1-200912151746.patch

---- Files affected:
packages/kernel:
   kernel-grsec_full.patch (1.3.2.28 -> 1.3.2.29) 

---- Diffs:

================================================================
Index: packages/kernel/kernel-grsec_full.patch
diff -u packages/kernel/kernel-grsec_full.patch:1.3.2.28 packages/kernel/kernel-grsec_full.patch:1.3.2.29
--- packages/kernel/kernel-grsec_full.patch:1.3.2.28	Tue Dec 15 23:45:58 2009
+++ packages/kernel/kernel-grsec_full.patch	Wed Dec 16 09:11:00 2009
@@ -6562,6 +6562,20 @@
  /* Minimum kernel alignment, as a power of two */
  #ifdef CONFIG_X86_64
  #define MIN_KERNEL_ALIGN_LG2	PMD_SHIFT
+diff -urNp linux-2.6.32.1/arch/x86/include/asm/cacheflush.h linux-2.6.32.1/arch/x86/include/asm/cacheflush.h
+--- linux-2.6.32.1/arch/x86/include/asm/cacheflush.h	2009-12-02 22:51:21.000000000 -0500
++++ linux-2.6.32.1/arch/x86/include/asm/cacheflush.h	2009-12-15 17:05:40.612643960 -0500
+@@ -179,8 +179,8 @@ extern const int rodata_test_data;
+ void set_kernel_text_rw(void);
+ void set_kernel_text_ro(void);
+ #else
+-static inline void set_kernel_text_rw(void) { }
+-static inline void set_kernel_text_ro(void) { }
++static inline void set_kernel_text_rw(void) { pax_open_kernel(); }
++static inline void set_kernel_text_ro(void) { pax_close_kernel(); }
+ #endif
+ 
+ #ifdef CONFIG_DEBUG_RODATA_TEST
 diff -urNp linux-2.6.32.1/arch/x86/include/asm/cache.h linux-2.6.32.1/arch/x86/include/asm/cache.h
 --- linux-2.6.32.1/arch/x86/include/asm/cache.h	2009-12-02 22:51:21.000000000 -0500
 +++ linux-2.6.32.1/arch/x86/include/asm/cache.h	2009-12-14 18:33:51.599707107 -0500
@@ -10453,19 +10467,53 @@
  	addq $EXCEPTION_STKSZ, TSS_ist + (\ist - 1) * 8(%rbp)
 diff -urNp linux-2.6.32.1/arch/x86/kernel/ftrace.c linux-2.6.32.1/arch/x86/kernel/ftrace.c
 --- linux-2.6.32.1/arch/x86/kernel/ftrace.c	2009-12-02 22:51:21.000000000 -0500
-+++ linux-2.6.32.1/arch/x86/kernel/ftrace.c	2009-12-14 18:33:51.665756688 -0500
-@@ -284,9 +284,9 @@ int ftrace_update_ftrace_func(ftrace_fun
++++ linux-2.6.32.1/arch/x86/kernel/ftrace.c	2009-12-15 17:05:40.572633226 -0500
+@@ -215,7 +215,7 @@ do_ftrace_mod_code(unsigned long ip, voi
+ 
+ 
+ 
+-static unsigned char ftrace_nop[MCOUNT_INSN_SIZE];
++static unsigned char ftrace_nop[MCOUNT_INSN_SIZE] __read_only;
+ 
+ static unsigned char *ftrace_nop_replace(void)
+ {
+@@ -228,6 +228,8 @@ ftrace_modify_code(unsigned long ip, uns
+ {
+ 	unsigned char replaced[MCOUNT_INSN_SIZE];
+ 
++	ip = ktla_ktva(ip);
++
+ 	/*
+ 	 * Note: Due to modules and __init, code can
+ 	 *  disappear and change, we need to protect against faulting
+@@ -284,7 +286,7 @@ int ftrace_update_ftrace_func(ftrace_fun
  	unsigned char old[MCOUNT_INSN_SIZE], *new;
  	int ret;
  
 -	memcpy(old, &ftrace_call, MCOUNT_INSN_SIZE);
 +	memcpy(old, (void *)ktla_ktva((unsigned long)ftrace_call), MCOUNT_INSN_SIZE);
  	new = ftrace_call_replace(ip, (unsigned long)func);
--	ret = ftrace_modify_code(ip, old, new);
-+	ret = ftrace_modify_code(ktla_ktva(ip), old, new);
+ 	ret = ftrace_modify_code(ip, old, new);
+ 
+@@ -337,15 +339,15 @@ int __init ftrace_dyn_arch_init(void *da
+ 	switch (faulted) {
+ 	case 0:
+ 		pr_info("ftrace: converting mcount calls to 0f 1f 44 00 00\n");
+-		memcpy(ftrace_nop, ftrace_test_p6nop, MCOUNT_INSN_SIZE);
++		memcpy(ftrace_nop, ktla_ktva(ftrace_test_p6nop), MCOUNT_INSN_SIZE);
+ 		break;
+ 	case 1:
+ 		pr_info("ftrace: converting mcount calls to 66 66 66 66 90\n");
+-		memcpy(ftrace_nop, ftrace_test_nop5, MCOUNT_INSN_SIZE);
++		memcpy(ftrace_nop, ktla_ktva(ftrace_test_nop5), MCOUNT_INSN_SIZE);
+ 		break;
+ 	case 2:
+ 		pr_info("ftrace: converting mcount calls to jmp . + 5\n");
+-		memcpy(ftrace_nop, ftrace_test_jmp, MCOUNT_INSN_SIZE);
++		memcpy(ftrace_nop, ktla_ktva(ftrace_test_jmp), MCOUNT_INSN_SIZE);
+ 		break;
+ 	}
  
- 	return ret;
- }
 diff -urNp linux-2.6.32.1/arch/x86/kernel/head32.c linux-2.6.32.1/arch/x86/kernel/head32.c
 --- linux-2.6.32.1/arch/x86/kernel/head32.c	2009-12-02 22:51:21.000000000 -0500
 +++ linux-2.6.32.1/arch/x86/kernel/head32.c	2009-12-14 18:33:51.665756688 -0500
@@ -16464,7 +16512,7 @@
  	}
 diff -urNp linux-2.6.32.1/arch/x86/mm/init_32.c linux-2.6.32.1/arch/x86/mm/init_32.c
 --- linux-2.6.32.1/arch/x86/mm/init_32.c	2009-12-02 22:51:21.000000000 -0500
-+++ linux-2.6.32.1/arch/x86/mm/init_32.c	2009-12-14 18:33:51.854715995 -0500
++++ linux-2.6.32.1/arch/x86/mm/init_32.c	2009-12-15 17:05:40.583629988 -0500
 @@ -72,36 +72,6 @@ static __init void *alloc_low_page(void)
  }
  
@@ -16722,6 +16770,30 @@
  		((unsigned long)&_etext - (unsigned long)&_text) >> 10);
  
  	/*
+@@ -1007,6 +1006,7 @@ void set_kernel_text_rw(void)
+ 	if (!kernel_set_to_readonly)
+ 		return;
+ 
++	start = ktla_ktva(start);
+ 	pr_debug("Set kernel text: %lx - %lx for read write\n",
+ 		 start, start+size);
+ 
+@@ -1021,6 +1021,7 @@ void set_kernel_text_ro(void)
+ 	if (!kernel_set_to_readonly)
+ 		return;
+ 
++	start = ktla_ktva(start);
+ 	pr_debug("Set kernel text: %lx - %lx for read only\n",
+ 		 start, start+size);
+ 
+@@ -1032,6 +1033,7 @@ void mark_rodata_ro(void)
+ 	unsigned long start = PFN_ALIGN(_text);
+ 	unsigned long size = PFN_ALIGN(_etext) - start;
+ 
++	start = ktla_ktva(start);
+ 	set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
+ 	printk(KERN_INFO "Write protecting the kernel text: %luk\n",
+ 		size >> 10);
 diff -urNp linux-2.6.32.1/arch/x86/mm/init_64.c linux-2.6.32.1/arch/x86/mm/init_64.c
 --- linux-2.6.32.1/arch/x86/mm/init_64.c	2009-12-02 22:51:21.000000000 -0500
 +++ linux-2.6.32.1/arch/x86/mm/init_64.c	2009-12-14 18:33:51.855716926 -0500
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-grsec_full.patch?r1=1.3.2.28&r2=1.3.2.29&f=u



More information about the pld-cvs-commit mailing list