packages (Titanium): kernel-bare-grsecurity/linux-2.6-grsecurity.patch - ht...

hawk hawk at pld-linux.org
Mon Aug 17 00:38:23 CEST 2009


Author: hawk                         Date: Sun Aug 16 22:38:23 2009 GMT
Module: packages                      Tag: Titanium
---- Log message:
- http://www.grsecurity.net/~spender/grsecurity-2.1.14-2.6.30.4-200908132040.patch
  with localversion killed

---- Files affected:
packages/kernel-bare-grsecurity:
   linux-2.6-grsecurity.patch (1.1.2.37 -> 1.1.2.38) 

---- Diffs:

================================================================
Index: packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch
diff -u packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch:1.1.2.37 packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch:1.1.2.38
--- packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch:1.1.2.37	Sat Jun 20 18:23:43 2009
+++ packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch	Mon Aug 17 00:38:12 2009
@@ -1,15 +1,19 @@
-     !
-   -~*~-
-    /!\
-   /%;@\
-  o/@,%\o
-  /%;`@,\
- o/@'%',\o
- '^^^N^^^`
-
-diff -urNp linux-2.6.27.10/arch/alpha/include/asm/elf.h linux-2.6.27.10/arch/alpha/include/asm/elf.h
---- linux-2.6.27.10/arch/alpha/include/asm/elf.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/include/asm/elf.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/alpha/include/asm/atomic.h linux-2.6.30.4/arch/alpha/include/asm/atomic.h
+--- linux-2.6.30.4/arch/alpha/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/include/asm/atomic.h	2009-07-30 09:48:09.872868955 -0400
+@@ -246,6 +246,9 @@ static __inline__ int atomic64_add_unles
+ #define atomic64_dec_and_test(v) (atomic64_sub_return(1, (v)) == 0)
+ 
+ #define atomic_inc(v) atomic_add(1,(v))
++#define atomic_inc_unchecked(v) atomic_inc(v)
++#define atomic_add_unchecked(i,v) atomic_add((i),(v))
++#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
+ #define atomic64_inc(v) atomic64_add(1,(v))
+ 
+ #define atomic_dec(v) atomic_sub(1,(v))
+diff -urNp linux-2.6.30.4/arch/alpha/include/asm/elf.h linux-2.6.30.4/arch/alpha/include/asm/elf.h
+--- linux-2.6.30.4/arch/alpha/include/asm/elf.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/include/asm/elf.h	2009-07-30 09:48:09.873636524 -0400
 @@ -91,6 +91,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
  
  #define ELF_ET_DYN_BASE		(TASK_UNMAPPED_BASE + 0x1000000)
@@ -24,9 +28,9 @@
  /* $0 is set by ld.so to a pointer to a function which might be 
     registered using atexit.  This provides a mean for the dynamic
     linker to call DT_FINI functions for shared libraries that have
-diff -urNp linux-2.6.27.10/arch/alpha/include/asm/kmap_types.h linux-2.6.27.10/arch/alpha/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/alpha/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/include/asm/kmap_types.h	2009-07-30 09:48:09.873636524 -0400
 @@ -24,7 +24,8 @@ D(9)	KM_IRQ0,
  D(10)	KM_IRQ1,
  D(11)	KM_SOFTIRQ0,
@@ -37,9 +41,9 @@
  };
  
  #undef D
-diff -urNp linux-2.6.27.10/arch/alpha/include/asm/pgtable.h linux-2.6.27.10/arch/alpha/include/asm/pgtable.h
---- linux-2.6.27.10/arch/alpha/include/asm/pgtable.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/include/asm/pgtable.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/alpha/include/asm/pgtable.h linux-2.6.30.4/arch/alpha/include/asm/pgtable.h
+--- linux-2.6.30.4/arch/alpha/include/asm/pgtable.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/include/asm/pgtable.h	2009-07-30 09:48:09.874706218 -0400
 @@ -101,6 +101,17 @@ struct vm_area_struct;
  #define PAGE_SHARED	__pgprot(_PAGE_VALID | __ACCESS_BITS)
  #define PAGE_COPY	__pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
@@ -58,9 +62,9 @@
  #define PAGE_KERNEL	__pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
  
  #define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
-diff -urNp linux-2.6.27.10/arch/alpha/kernel/module.c linux-2.6.27.10/arch/alpha/kernel/module.c
---- linux-2.6.27.10/arch/alpha/kernel/module.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/kernel/module.c	2008-11-18 03:38:43.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/alpha/kernel/module.c linux-2.6.30.4/arch/alpha/kernel/module.c
+--- linux-2.6.30.4/arch/alpha/kernel/module.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/kernel/module.c	2009-07-30 09:48:09.875723461 -0400
 @@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs, 
  
  	/* The small sections were sorted to the end of the segment.
@@ -70,21 +74,21 @@
  	got = sechdrs[me->arch.gotsecindex].sh_addr;
  
  	for (i = 0; i < n; i++) {
-diff -urNp linux-2.6.27.10/arch/alpha/kernel/osf_sys.c linux-2.6.27.10/arch/alpha/kernel/osf_sys.c
---- linux-2.6.27.10/arch/alpha/kernel/osf_sys.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/kernel/osf_sys.c	2008-11-18 03:38:43.000000000 -0500
-@@ -1232,6 +1232,10 @@ arch_get_unmapped_area(struct file *filp
+diff -urNp linux-2.6.30.4/arch/alpha/kernel/osf_sys.c linux-2.6.30.4/arch/alpha/kernel/osf_sys.c
+--- linux-2.6.30.4/arch/alpha/kernel/osf_sys.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/kernel/osf_sys.c	2009-07-30 09:48:09.875723461 -0400
+@@ -1215,6 +1215,10 @@ arch_get_unmapped_area(struct file *filp
  	   merely specific addresses, but regions of memory -- perhaps
  	   this feature should be incorporated into all ports?  */
  
 +#ifdef CONFIG_PAX_RANDMMAP
-+	if (!(current->mm->pax_flags & MF_PAX_RANDMMAP) || !filp)
++	if (!(current->mm->pax_flags & MF_PAX_RANDMMAP))
 +#endif
 +
  	if (addr) {
  		addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
  		if (addr != (unsigned long) -ENOMEM)
-@@ -1239,8 +1243,8 @@ arch_get_unmapped_area(struct file *filp
+@@ -1222,8 +1226,8 @@ arch_get_unmapped_area(struct file *filp
  	}
  
  	/* Next, try allocating at TASK_UNMAPPED_BASE.  */
@@ -95,30 +99,9 @@
  	if (addr != (unsigned long) -ENOMEM)
  		return addr;
  
-diff -urNp linux-2.6.27.10/arch/alpha/kernel/ptrace.c linux-2.6.27.10/arch/alpha/kernel/ptrace.c
---- linux-2.6.27.10/arch/alpha/kernel/ptrace.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/kernel/ptrace.c	2008-11-18 03:38:43.000000000 -0500
-@@ -15,6 +15,7 @@
- #include <linux/slab.h>
- #include <linux/security.h>
- #include <linux/signal.h>
-+#include <linux/grsecurity.h>
- 
- #include <asm/uaccess.h>
- #include <asm/pgtable.h>
-@@ -266,6 +267,9 @@ long arch_ptrace(struct task_struct *chi
- 	size_t copied;
- 	long ret;
- 
-+	if (gr_handle_ptrace(child, request))
-+		return -EPERM;
-+
- 	switch (request) {
- 	/* When I and D space are separate, these will need to be fixed.  */
- 	case PTRACE_PEEKTEXT: /* read word at location addr. */
-diff -urNp linux-2.6.27.10/arch/alpha/mm/fault.c linux-2.6.27.10/arch/alpha/mm/fault.c
---- linux-2.6.27.10/arch/alpha/mm/fault.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/alpha/mm/fault.c	2008-11-18 03:38:43.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/alpha/mm/fault.c linux-2.6.30.4/arch/alpha/mm/fault.c
+--- linux-2.6.30.4/arch/alpha/mm/fault.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/alpha/mm/fault.c	2009-07-30 09:48:09.876636955 -0400
 @@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
  	__reload_thread(pcb);
  }
@@ -275,10 +258,23 @@
  	} else if (!cause) {
  		/* Allow reads even for write-only mappings */
  		if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
-diff -urNp linux-2.6.27.10/arch/arm/include/asm/elf.h linux-2.6.27.10/arch/arm/include/asm/elf.h
---- linux-2.6.27.10/arch/arm/include/asm/elf.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/arm/include/asm/elf.h	2008-11-18 03:39:50.000000000 -0500
-@@ -87,7 +87,14 @@ extern char elf_platform[];
+diff -urNp linux-2.6.30.4/arch/arm/include/asm/atomic.h linux-2.6.30.4/arch/arm/include/asm/atomic.h
+--- linux-2.6.30.4/arch/arm/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/include/asm/atomic.h	2009-07-30 09:48:09.876636955 -0400
+@@ -235,6 +235,9 @@ static inline int atomic_add_unless(atom
+ 
+ #define atomic_inc(v)		atomic_add(1, v)
+ #define atomic_dec(v)		atomic_sub(1, v)
++#define atomic_inc_unchecked(v)		atomic_inc(v)
++#define atomic_add_unchecked(i, v)	atomic_add(i, v)
++#define atomic_sub_unchecked(i, v)	atomic_sub(i, v)
+ 
+ #define atomic_inc_and_test(v)	(atomic_add_return(1, v) == 0)
+ #define atomic_dec_and_test(v)	(atomic_sub_return(1, v) == 0)
+diff -urNp linux-2.6.30.4/arch/arm/include/asm/elf.h linux-2.6.30.4/arch/arm/include/asm/elf.h
+--- linux-2.6.30.4/arch/arm/include/asm/elf.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/include/asm/elf.h	2009-07-30 09:48:09.877630671 -0400
+@@ -103,7 +103,14 @@ extern int arm_elf_read_implies_exec(con
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
  
@@ -294,32 +290,67 @@
  
  /* When the program starts, a1 contains a pointer to a function to be 
     registered with atexit, as per the SVR4 ABI.  A value of 0 means we 
-diff -urNp linux-2.6.27.10/arch/arm/include/asm/kmap_types.h linux-2.6.27.10/arch/arm/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/arm/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/arm/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
-@@ -18,6 +18,7 @@ enum km_type {
- 	KM_IRQ1,
+diff -urNp linux-2.6.30.4/arch/arm/include/asm/kmap_types.h linux-2.6.30.4/arch/arm/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/arm/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/include/asm/kmap_types.h	2009-07-30 09:48:09.878525050 -0400
+@@ -19,6 +19,7 @@ enum km_type {
  	KM_SOFTIRQ0,
  	KM_SOFTIRQ1,
+ 	KM_L2_CACHE,
 +	KM_CLEARPAGE,
  	KM_TYPE_NR
  };
  
-diff -urNp linux-2.6.27.10/arch/arm/mm/mmap.c linux-2.6.27.10/arch/arm/mm/mmap.c
---- linux-2.6.27.10/arch/arm/mm/mmap.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/arm/mm/mmap.c	2008-11-18 03:38:43.000000000 -0500
-@@ -60,6 +60,10 @@ arch_get_unmapped_area(struct file *filp
+diff -urNp linux-2.6.30.4/arch/arm/include/asm/uaccess.h linux-2.6.30.4/arch/arm/include/asm/uaccess.h
+--- linux-2.6.30.4/arch/arm/include/asm/uaccess.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/include/asm/uaccess.h	2009-07-30 09:48:09.878525050 -0400
+@@ -398,6 +398,9 @@ extern unsigned long __must_check __strn
+ 
+ static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
+ {
++	if ((long)n < 0)
++		return n;
++
+ 	if (access_ok(VERIFY_READ, from, n))
+ 		n = __copy_from_user(to, from, n);
+ 	else /* security hole - plug it */
+@@ -407,6 +410,9 @@ static inline unsigned long __must_check
+ 
+ static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
+ {
++	if ((long)n < 0)
++		return n;
++
+ 	if (access_ok(VERIFY_WRITE, to, n))
+ 		n = __copy_to_user(to, from, n);
+ 	return n;
+diff -urNp linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c
+--- linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/mach-ns9xxx/clock.c	2009-07-30 09:48:09.879705308 -0400
+@@ -195,7 +195,7 @@ static int clk_debugfs_open(struct inode
+ 	return single_open(file, clk_debugfs_show, NULL);
+ }
+ 
+-static struct file_operations clk_debugfs_operations = {
++static const struct file_operations clk_debugfs_operations = {
+ 	.open = clk_debugfs_open,
+ 	.read = seq_read,
+ 	.llseek = seq_lseek,
+diff -urNp linux-2.6.30.4/arch/arm/mm/mmap.c linux-2.6.30.4/arch/arm/mm/mmap.c
+--- linux-2.6.30.4/arch/arm/mm/mmap.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/arm/mm/mmap.c	2009-07-30 09:48:09.881684524 -0400
+@@ -62,6 +62,10 @@ arch_get_unmapped_area(struct file *filp
  	if (len > TASK_SIZE)
  		return -ENOMEM;
  
 +#ifdef CONFIG_PAX_RANDMMAP
-+	if (!(mm->pax_flags & MF_PAX_RANDMMAP) || !filp)
++	if (!(mm->pax_flags & MF_PAX_RANDMMAP))
 +#endif
 +
  	if (addr) {
  		if (do_align)
  			addr = COLOUR_ALIGN(addr, pgoff);
-@@ -72,10 +76,10 @@ arch_get_unmapped_area(struct file *filp
+@@ -74,10 +78,10 @@ arch_get_unmapped_area(struct file *filp
  			return addr;
  	}
  	if (len > mm->cached_hole_size) {
@@ -333,7 +364,7 @@
  	}
  
  full_search:
-@@ -91,8 +95,8 @@ full_search:
+@@ -93,8 +97,8 @@ full_search:
  			 * Start a new search - just in case we missed
  			 * some holes.
  			 */
@@ -344,9 +375,25 @@
  				mm->cached_hole_size = 0;
  				goto full_search;
  			}
-diff -urNp linux-2.6.27.10/arch/avr32/include/asm/elf.h linux-2.6.27.10/arch/avr32/include/asm/elf.h
---- linux-2.6.27.10/arch/avr32/include/asm/elf.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/avr32/include/asm/elf.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/avr32/include/asm/atomic.h linux-2.6.30.4/arch/avr32/include/asm/atomic.h
+--- linux-2.6.30.4/arch/avr32/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/avr32/include/asm/atomic.h	2009-07-30 09:48:09.881684524 -0400
+@@ -176,9 +176,12 @@ static inline int atomic_sub_if_positive
+ #define atomic_cmpxchg(v, o, n)	(cmpxchg(&((v)->counter), (o), (n)))
+ 
+ #define atomic_sub(i, v)	(void)atomic_sub_return(i, v)
++#define atomic_sub_unchecked(i, v)	atomic_sub((i), (v))
+ #define atomic_add(i, v)	(void)atomic_add_return(i, v)
++#define atomic_add_unchecked(i, v)	atomic_add((i), (v))
+ #define atomic_dec(v)		atomic_sub(1, (v))
+ #define atomic_inc(v)		atomic_add(1, (v))
++#define atomic_inc_unchecked(v)	atomic_inc(v)
+ 
+ #define atomic_dec_return(v)	atomic_sub_return(1, v)
+ #define atomic_inc_return(v)	atomic_add_return(1, v)
+diff -urNp linux-2.6.30.4/arch/avr32/include/asm/elf.h linux-2.6.30.4/arch/avr32/include/asm/elf.h
+--- linux-2.6.30.4/arch/avr32/include/asm/elf.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/avr32/include/asm/elf.h	2009-07-30 09:48:09.881684524 -0400
 @@ -85,8 +85,14 @@ typedef struct user_fpu_struct elf_fpreg
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
@@ -363,9 +410,9 @@
  
  /* This yields a mask that user programs can use to figure out what
     instruction set this CPU supports.  This could be done in user space,
-diff -urNp linux-2.6.27.10/arch/avr32/include/asm/kmap_types.h linux-2.6.27.10/arch/avr32/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/avr32/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/avr32/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/avr32/include/asm/kmap_types.h	2009-07-30 09:48:09.882650296 -0400
 @@ -22,7 +22,8 @@ D(10)	KM_IRQ0,
  D(11)	KM_IRQ1,
  D(12)	KM_SOFTIRQ0,
@@ -376,9 +423,9 @@
  };
  
  #undef D
-diff -urNp linux-2.6.27.10/arch/avr32/mm/fault.c linux-2.6.27.10/arch/avr32/mm/fault.c
---- linux-2.6.27.10/arch/avr32/mm/fault.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/avr32/mm/fault.c	2008-11-18 03:38:43.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/avr32/mm/fault.c linux-2.6.30.4/arch/avr32/mm/fault.c
+--- linux-2.6.30.4/arch/avr32/mm/fault.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/avr32/mm/fault.c	2009-07-30 09:48:09.882650296 -0400
 @@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
  
  int exception_trace = 1;
@@ -420,9 +467,22 @@
  		if (exception_trace && printk_ratelimit())
  			printk("%s%s[%d]: segfault at %08lx pc %08lx "
  			       "sp %08lx ecr %lu\n",
-diff -urNp linux-2.6.27.10/arch/blackfin/include/asm/kmap_types.h linux-2.6.27.10/arch/blackfin/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/blackfin/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/blackfin/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/blackfin/include/asm/atomic.h linux-2.6.30.4/arch/blackfin/include/asm/atomic.h
+--- linux-2.6.30.4/arch/blackfin/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/blackfin/include/asm/atomic.h	2009-07-30 09:48:09.882650296 -0400
+@@ -178,6 +178,9 @@ static inline void atomic_set_mask(unsig
+ 
+ #endif /* !CONFIG_SMP */
+ 
++#define atomic_add_unchecked(i, v) atomic_add((i), (v))
++#define atomic_sub_unchecked(i, v) atomic_sub((i), (v))
++#define atomic_inc_unchecked(v) atomic_inc((v))
+ #define atomic_add_negative(a, v)	(atomic_add_return((a), (v)) < 0)
+ #define atomic_dec_return(v) atomic_sub_return(1,(v))
+ #define atomic_inc_return(v) atomic_add_return(1,(v))
+diff -urNp linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/blackfin/include/asm/kmap_types.h	2009-07-30 09:48:09.883618875 -0400
 @@ -15,6 +15,7 @@ enum km_type {
  	KM_IRQ1,
  	KM_SOFTIRQ0,
@@ -431,9 +491,122 @@
  	KM_TYPE_NR
  };
  
-diff -urNp linux-2.6.27.10/arch/h8300/include/asm/kmap_types.h linux-2.6.27.10/arch/h8300/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/h8300/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/h8300/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c
+--- linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/blackfin/mach-bf561/coreb.c	2009-07-30 09:48:09.883618875 -0400
+@@ -292,7 +292,7 @@ static int coreb_ioctl(struct inode *ino
+ 	return retval;
+ }
+ 
+-static struct file_operations coreb_fops = {
++static const struct file_operations coreb_fops = {
+ 	.owner = THIS_MODULE,
+ 	.llseek = coreb_lseek,
+ 	.read = coreb_read,
+diff -urNp linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c
+--- linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/cris/arch-v10/drivers/sync_serial.c	2009-07-30 09:48:09.883618875 -0400
+@@ -244,7 +244,7 @@ static unsigned sync_serial_prescale_sha
+ 
+ #define NUMBER_OF_PORTS 2
+ 
+-static struct file_operations sync_serial_fops = {
++static const struct file_operations sync_serial_fops = {
+ 	.owner   = THIS_MODULE,
+ 	.write   = sync_serial_write,
+ 	.read    = sync_serial_read,
+diff -urNp linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c
+--- linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/cris/arch-v32/drivers/mach-fs/gpio.c	2009-07-30 12:06:52.081911892 -0400
+@@ -855,7 +855,7 @@ gpio_leds_ioctl(unsigned int cmd, unsign
+ 	return 0;
+ }
+ 
+-struct file_operations gpio_fops = {
++struct struct file_operations gpio_fops = {
+ 	.owner       = THIS_MODULE,
+ 	.poll        = gpio_poll,
+ 	.ioctl       = gpio_ioctl,
+diff -urNp linux-2.6.30.4/arch/cris/include/asm/atomic.h linux-2.6.30.4/arch/cris/include/asm/atomic.h
+--- linux-2.6.30.4/arch/cris/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/cris/include/asm/atomic.h	2009-07-30 09:48:09.884412595 -0400
+@@ -152,6 +152,10 @@ static inline int atomic_add_unless(atom
+ }
+ #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+ 
++#define atomic_inc_unchecked(v) atomic_inc((v))
++#define atomic_add_unchecked(i,v) atomic_add((i),(v))
++#define atomic_sub_unchecked(i,v) atomic_sub((i),(v))
++
+ /* Atomic operations are already serializing */
+ #define smp_mb__before_atomic_dec()    barrier()
+ #define smp_mb__after_atomic_dec()     barrier()
+diff -urNp linux-2.6.30.4/arch/cris/include/asm/kmap_types.h linux-2.6.30.4/arch/cris/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/cris/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/cris/include/asm/kmap_types.h	2009-07-30 09:48:09.884412595 -0400
+@@ -19,6 +19,7 @@ enum km_type {
+ 	KM_IRQ1,
+ 	KM_SOFTIRQ0,
+ 	KM_SOFTIRQ1,
++	KM_CLEARPAGE,
+ 	KM_TYPE_NR
+ };
+ 
+diff -urNp linux-2.6.30.4/arch/frv/include/asm/atomic.h linux-2.6.30.4/arch/frv/include/asm/atomic.h
+--- linux-2.6.30.4/arch/frv/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/frv/include/asm/atomic.h	2009-07-30 09:48:09.885412202 -0400
+@@ -114,6 +114,10 @@ static inline void atomic_dec(atomic_t *
+ 	atomic_sub_return(1, v);
+ }
+ 
++#define atomic_inc_unchecked(v)		atomic_inc(v)
++#define atomic_add_unchecked(i,v)	atomic_add((i),(v))
++#define atomic_sub_unchecked(i,v)	atomic_sub((i),(v))
++
+ #define atomic_dec_return(v)		atomic_sub_return(1, (v))
+ #define atomic_inc_return(v)		atomic_add_return(1, (v))
+ 
+diff -urNp linux-2.6.30.4/arch/frv/include/asm/kmap_types.h linux-2.6.30.4/arch/frv/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/frv/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/frv/include/asm/kmap_types.h	2009-07-30 09:48:09.885412202 -0400
+@@ -23,6 +23,7 @@ enum km_type {
+ 	KM_IRQ1,
+ 	KM_SOFTIRQ0,
+ 	KM_SOFTIRQ1,
++	KM_CLEARPAGE,
+ 	KM_TYPE_NR
+ };
+ 
+diff -urNp linux-2.6.30.4/arch/h8300/include/asm/atomic.h linux-2.6.30.4/arch/h8300/include/asm/atomic.h
+--- linux-2.6.30.4/arch/h8300/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/h8300/include/asm/atomic.h	2009-07-30 09:48:09.885412202 -0400
+@@ -26,6 +26,7 @@ static __inline__ int atomic_add_return(
+ }
+ 
+ #define atomic_add(i, v) atomic_add_return(i, v)
++#define atomic_add_unchecked(i, v) atomic_add((i), (v))
+ #define atomic_add_negative(a, v)	(atomic_add_return((a), (v)) < 0)
+ 
+ static __inline__ int atomic_sub_return(int i, atomic_t *v)
+@@ -38,6 +39,7 @@ static __inline__ int atomic_sub_return(
+ }
+ 
+ #define atomic_sub(i, v) atomic_sub_return(i, v)
++#define atomic_subUnchecked(i, v) atomic_sub(i, v)
+ #define atomic_sub_and_test(i,v) (atomic_sub_return(i, v) == 0)
+ 
+ static __inline__ int atomic_inc_return(atomic_t *v)
+@@ -51,6 +53,7 @@ static __inline__ int atomic_inc_return(
+ }
+ 
+ #define atomic_inc(v) atomic_inc_return(v)
++#define atomic_inc_unchecked(v) atomic_inc(v)
+ 
+ /*
+  * atomic_inc_and_test - increment and test
+diff -urNp linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/h8300/include/asm/kmap_types.h	2009-07-30 09:48:09.885412202 -0400
 @@ -15,6 +15,7 @@ enum km_type {
  	KM_IRQ1,
  	KM_SOFTIRQ0,
@@ -442,9 +615,9 @@
  	KM_TYPE_NR
  };
  
-diff -urNp linux-2.6.27.10/arch/ia64/ia32/binfmt_elf32.c linux-2.6.27.10/arch/ia64/ia32/binfmt_elf32.c
---- linux-2.6.27.10/arch/ia64/ia32/binfmt_elf32.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/ia32/binfmt_elf32.c	2008-11-18 03:38:43.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c
+--- linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/ia32/binfmt_elf32.c	2009-07-30 09:48:09.886522893 -0400
 @@ -45,6 +45,13 @@ randomize_stack_top(unsigned long stack_
  
  #define elf_read_implies_exec(ex, have_pt_gnu_stack)	(!(have_pt_gnu_stack))
@@ -459,9 +632,23 @@
  /* Ugly but avoids duplication */
  #include "../../../fs/binfmt_elf.c"
  
-diff -urNp linux-2.6.27.10/arch/ia64/ia32/ia32priv.h linux-2.6.27.10/arch/ia64/ia32/ia32priv.h
---- linux-2.6.27.10/arch/ia64/ia32/ia32priv.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/ia32/ia32priv.h	2008-11-18 03:38:43.000000000 -0500
+@@ -69,11 +76,11 @@ ia32_install_gate_page (struct vm_area_s
+ }
+ 
+ 
+-static struct vm_operations_struct ia32_shared_page_vm_ops = {
++static const struct vm_operations_struct ia32_shared_page_vm_ops = {
+ 	.fault = ia32_install_shared_page
+ };
+ 
+-static struct vm_operations_struct ia32_gate_page_vm_ops = {
++static const struct vm_operations_struct ia32_gate_page_vm_ops = {
+ 	.fault = ia32_install_gate_page
+ };
+ 
+diff -urNp linux-2.6.30.4/arch/ia64/ia32/ia32priv.h linux-2.6.30.4/arch/ia64/ia32/ia32priv.h
+--- linux-2.6.30.4/arch/ia64/ia32/ia32priv.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/ia32/ia32priv.h	2009-07-30 09:48:09.886522893 -0400
 @@ -296,7 +296,14 @@ typedef struct compat_siginfo {
  #define ELF_DATA	ELFDATA2LSB
  #define ELF_ARCH	EM_386
@@ -478,9 +665,24 @@
  #define IA32_GATE_OFFSET	IA32_PAGE_OFFSET
  #define IA32_GATE_END		IA32_PAGE_OFFSET + PAGE_SIZE
  
-diff -urNp linux-2.6.27.10/arch/ia64/include/asm/elf.h linux-2.6.27.10/arch/ia64/include/asm/elf.h
---- linux-2.6.27.10/arch/ia64/include/asm/elf.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/include/asm/elf.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/ia64/include/asm/atomic.h linux-2.6.30.4/arch/ia64/include/asm/atomic.h
+--- linux-2.6.30.4/arch/ia64/include/asm/atomic.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/include/asm/atomic.h	2009-07-30 09:48:09.886522893 -0400
+@@ -201,8 +201,11 @@ atomic64_add_negative (__s64 i, atomic64
+ #define atomic64_inc_and_test(v)	(atomic64_add_return(1, (v)) == 0)
+ 
+ #define atomic_add(i,v)			atomic_add_return((i), (v))
++#define atomic_add_unchecked(i,v)	atomic_add((i), (v))
+ #define atomic_sub(i,v)			atomic_sub_return((i), (v))
++#define atomic_sub_unchecked(i,v)	atomic_sub((i), (v))
+ #define atomic_inc(v)			atomic_add(1, (v))
++#define atomic_inc_unchecked(v)		atomic_inc(v)
+ #define atomic_dec(v)			atomic_sub(1, (v))
+ 
+ #define atomic64_add(i,v)		atomic64_add_return((i), (v))
+diff -urNp linux-2.6.30.4/arch/ia64/include/asm/elf.h linux-2.6.30.4/arch/ia64/include/asm/elf.h
+--- linux-2.6.30.4/arch/ia64/include/asm/elf.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/include/asm/elf.h	2009-07-30 09:48:09.887468908 -0400
 @@ -43,6 +43,13 @@
   */
  #define ELF_ET_DYN_BASE		(TASK_UNMAPPED_BASE + 0x800000000UL)
@@ -495,9 +697,9 @@
  #define PT_IA_64_UNWIND		0x70000001
  
  /* IA-64 relocations: */
-diff -urNp linux-2.6.27.10/arch/ia64/include/asm/kmap_types.h linux-2.6.27.10/arch/ia64/include/asm/kmap_types.h
---- linux-2.6.27.10/arch/ia64/include/asm/kmap_types.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/include/asm/kmap_types.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h
+--- linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/include/asm/kmap_types.h	2009-07-30 09:48:09.887468908 -0400
 @@ -22,7 +22,8 @@ D(9)	KM_IRQ0,
  D(10)	KM_IRQ1,
  D(11)	KM_SOFTIRQ0,
@@ -508,9 +710,9 @@
  };
  
  #undef D
-diff -urNp linux-2.6.27.10/arch/ia64/include/asm/pgtable.h linux-2.6.27.10/arch/ia64/include/asm/pgtable.h
---- linux-2.6.27.10/arch/ia64/include/asm/pgtable.h	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/include/asm/pgtable.h	2008-11-18 03:39:50.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/ia64/include/asm/pgtable.h linux-2.6.30.4/arch/ia64/include/asm/pgtable.h
+--- linux-2.6.30.4/arch/ia64/include/asm/pgtable.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/include/asm/pgtable.h	2009-07-30 09:48:09.887468908 -0400
 @@ -143,6 +143,17 @@
  #define PAGE_READONLY	__pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
  #define PAGE_COPY	__pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_R)
@@ -529,9 +731,30 @@
  #define PAGE_GATE	__pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
  #define PAGE_KERNEL	__pgprot(__DIRTY_BITS  | _PAGE_PL_0 | _PAGE_AR_RWX)
  #define PAGE_KERNELRX	__pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
-diff -urNp linux-2.6.27.10/arch/ia64/kernel/module.c linux-2.6.27.10/arch/ia64/kernel/module.c
---- linux-2.6.27.10/arch/ia64/kernel/module.c	2008-11-07 12:55:34.000000000 -0500
-+++ linux-2.6.27.10/arch/ia64/kernel/module.c	2008-11-18 03:38:43.000000000 -0500
+diff -urNp linux-2.6.30.4/arch/ia64/include/asm/uaccess.h linux-2.6.30.4/arch/ia64/include/asm/uaccess.h
+--- linux-2.6.30.4/arch/ia64/include/asm/uaccess.h	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/include/asm/uaccess.h	2009-07-30 11:10:48.660249525 -0400
+@@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
+ 	const void *__cu_from = (from);							\
+ 	long __cu_len = (n);								\
+ 											\
+-	if (__access_ok(__cu_to, __cu_len, get_fs()))					\
++	if (__cu_len > 0 && __cu_len <= INT_MAX && __access_ok(__cu_to, __cu_len, get_fs()))	\
+ 		__cu_len = __copy_user(__cu_to, (__force void __user *) __cu_from, __cu_len);	\
+ 	__cu_len;									\
+ })
+@@ -269,7 +269,7 @@ __copy_from_user (void *to, const void _
+ 	long __cu_len = (n);								\
+ 											\
+ 	__chk_user_ptr(__cu_from);							\
+-	if (__access_ok(__cu_from, __cu_len, get_fs()))					\
++	if (__cu_len > 0 && __cu_len <= INT_MAX && __access_ok(__cu_from, __cu_len, get_fs()))	\
+ 		__cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len);	\
+ 	__cu_len;									\
+ })
+diff -urNp linux-2.6.30.4/arch/ia64/kernel/module.c linux-2.6.30.4/arch/ia64/kernel/module.c
+--- linux-2.6.30.4/arch/ia64/kernel/module.c	2009-07-24 17:47:51.000000000 -0400
++++ linux-2.6.30.4/arch/ia64/kernel/module.c	2009-07-30 09:48:09.888412729 -0400
 @@ -312,8 +312,7 @@ module_alloc (unsigned long size)
  void
  module_free (struct module *mod, void *module_region)
@@ -542,7 +765,7 @@
  		unw_remove_unwind_table(mod->arch.init_unw_table);
  		mod->arch.init_unw_table = NULL;
  	}
-@@ -491,15 +490,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd
+@@ -499,15 +498,39 @@ module_frob_arch_sections (Elf_Ehdr *ehd
  }
  
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel-bare-grsecurity/linux-2.6-grsecurity.patch?r1=1.1.2.37&r2=1.1.2.38&f=u



More information about the pld-cvs-commit mailing list