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

arekm arekm at pld-linux.org
Mon Sep 14 08:56:14 CEST 2009


Author: arekm                        Date: Mon Sep 14 06:56:14 2009 GMT
Module: packages                      Tag: GRSECURITY_RAW
---- Log message:
http://www.grsecurity.net/~spender/grsecurity-2.1.14-2.6.31-200909121839.patch

---- Files affected:
packages/kernel:
   kernel-grsec_full.patch (1.3.2.9 -> 1.3.2.10) 

---- Diffs:

================================================================
Index: packages/kernel/kernel-grsec_full.patch
diff -u packages/kernel/kernel-grsec_full.patch:1.3.2.9 packages/kernel/kernel-grsec_full.patch:1.3.2.10
--- packages/kernel/kernel-grsec_full.patch:1.3.2.9	Fri Sep 11 09:06:35 2009
+++ packages/kernel/kernel-grsec_full.patch	Mon Sep 14 08:56:05 2009
@@ -1,13 +1,47 @@
 diff -urNp linux-2.6.31/arch/alpha/include/asm/atomic.h linux-2.6.31/arch/alpha/include/asm/atomic.h
 --- linux-2.6.31/arch/alpha/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/alpha/include/asm/atomic.h	2009-09-06 15:29:11.104382093 -0400
-@@ -246,6 +246,9 @@ static __inline__ int atomic64_add_unles
++++ linux-2.6.31/arch/alpha/include/asm/atomic.h	2009-09-11 22:49:04.785615322 -0400
+@@ -18,9 +18,11 @@
+ #define ATOMIC64_INIT(i)	( (atomic64_t) { (i) } )
+ 
+ #define atomic_read(v)		((v)->counter + 0)
++#define atomic_read_unchecked(v)	((v)->counter + 0)
+ #define atomic64_read(v)	((v)->counter + 0)
+ 
+ #define atomic_set(v,i)		((v)->counter = (i))
++#define atomic_set_unchecked(v,i)	((v)->counter = (i))
+ #define atomic64_set(v,i)	((v)->counter = (i))
+ 
+ /*
+@@ -44,6 +46,11 @@ static __inline__ void atomic_add(int i,
+ 	:"Ir" (i), "m" (v->counter));
+ }
+ 
++static __inline__ void atomic_add_unchecked(int i, atomic_unchecked_t * v)
++{
++	atomic_add(i, (atomic_t *)v);
++}
++
+ static __inline__ void atomic64_add(long i, atomic64_t * v)
+ {
+ 	unsigned long temp;
+@@ -74,6 +81,11 @@ static __inline__ void atomic_sub(int i,
+ 	:"Ir" (i), "m" (v->counter));
+ }
+ 
++static __inline__ void atomic_sub_unchecked(int i, atomic_unchecked_t * v)
++{
++	atomic_sub(i, (atomic_t *)v);
++}
++
+ static __inline__ void atomic64_sub(long i, atomic64_t * v)
+ {
+ 	unsigned long temp;
+@@ -246,6 +258,7 @@ 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 atomic_inc_unchecked(v) atomic_add_unchecked(1,(v))
  #define atomic64_inc(v) atomic64_add(1,(v))
  
  #define atomic_dec(v) atomic_sub(1,(v))
@@ -247,17 +281,67 @@
  		if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
 diff -urNp linux-2.6.31/arch/arm/include/asm/atomic.h linux-2.6.31/arch/arm/include/asm/atomic.h
 --- linux-2.6.31/arch/arm/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/arm/include/asm/atomic.h	2009-09-06 15:29:11.107211663 -0400
-@@ -233,6 +233,9 @@ static inline int atomic_add_unless(atom
++++ linux-2.6.31/arch/arm/include/asm/atomic.h	2009-09-11 22:51:00.173407719 -0400
+@@ -20,6 +20,7 @@
+ #ifdef __KERNEL__
+ 
+ #define atomic_read(v)	((v)->counter)
++#define atomic_read_unchecked(v)	((v)->counter)
+ 
+ #if __LINUX_ARM_ARCH__ >= 6
+ 
+@@ -44,6 +45,11 @@ static inline void atomic_set(atomic_t *
+ 	: "cc");
+ }
+ 
++static inline void atomic_set_unchecked(atomic_unchecked_t *v, int i)
++{
++	atomic_set((atomic_t *)v, i);
++}
++
+ static inline void atomic_add(int i, atomic_t *v)
+ {
+ 	unsigned long tmp;
+@@ -60,6 +66,11 @@ static inline void atomic_add(int i, ato
+ 	: "cc");
+ }
+ 
++static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_add(i, (atomic_t *)v);
++}
++
+ static inline int atomic_add_return(int i, atomic_t *v)
+ {
+ 	unsigned long tmp;
+@@ -98,6 +109,11 @@ static inline void atomic_sub(int i, ato
+ 	: "cc");
+ }
+ 
++static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_sub(i, (atomic_t *)v);
++}
++
+ static inline int atomic_sub_return(int i, atomic_t *v)
+ {
+ 	unsigned long tmp;
+@@ -164,6 +180,7 @@ static inline void atomic_clear_mask(uns
+ #endif
+ 
+ #define atomic_set(v,i)	(((v)->counter) = (i))
++#define atomic_set_unchecked(v,i)	(((v)->counter) = (i))
+ 
+ static inline int atomic_add_return(int i, atomic_t *v)
+ {
+@@ -232,6 +249,7 @@ static inline int atomic_add_unless(atom
+ #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
  
  #define atomic_inc(v)		atomic_add(1, v)
++#define atomic_inc_unchecked(v)		atomic_add_unchecked(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.31/arch/arm/include/asm/elf.h linux-2.6.31/arch/arm/include/asm/elf.h
 --- linux-2.6.31/arch/arm/include/asm/elf.h	2009-08-27 20:59:04.000000000 -0400
 +++ linux-2.6.31/arch/arm/include/asm/elf.h	2009-09-06 15:29:11.107211663 -0400
@@ -364,17 +448,65 @@
  			}
 diff -urNp linux-2.6.31/arch/avr32/include/asm/atomic.h linux-2.6.31/arch/avr32/include/asm/atomic.h
 --- linux-2.6.31/arch/avr32/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/avr32/include/asm/atomic.h	2009-09-06 15:29:11.109255148 -0400
-@@ -176,9 +176,12 @@ static inline int atomic_sub_if_positive
++++ linux-2.6.31/arch/avr32/include/asm/atomic.h	2009-09-11 22:52:43.047793693 -0400
+@@ -20,7 +20,9 @@
+ #define ATOMIC_INIT(i)  { (i) }
+ 
+ #define atomic_read(v)		((v)->counter)
++#define atomic_read_unchecked(v)	((v)->counter)
+ #define atomic_set(v, i)	(((v)->counter) = i)
++#define atomic_set_unchecked(v, i)	(((v)->counter) = i)
+ 
+ /*
+  * atomic_sub_return - subtract the atomic variable
+@@ -48,6 +50,18 @@ static inline int atomic_sub_return(int 
+ }
+ 
+ /*
++ * atomic_sub_return_unchecked - subtract the atomic variable
++ * @i: integer value to subtract
++ * @v: pointer of type atomic_unchecked_t
++ *
++ * Atomically subtracts @i from @v. Returns the resulting value.
++ */
++static inline int atomic_sub_return_unchecked(int i, atomic_unchecked_t *v)
++{
++	return atomic_sub_return(i, (atomic_t *)v);
++}
++
++/*
+  * atomic_add_return - add integer to atomic variable
+  * @i: integer value to add
+  * @v: pointer of type atomic_t
+@@ -76,6 +90,18 @@ static inline int atomic_add_return(int 
+ }
+ 
+ /*
++ * atomic_add_return_unchecked - add integer to atomic variable
++ * @i: integer value to add
++ * @v: pointer of type atomic_unchecked_t
++ *
++ * Atomically adds @i to @v. Returns the resulting value.
++ */
++static inline int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
++{
++	return atomic_add_return(i, (atomic_t *)v);
++}
++
++/*
+  * atomic_sub_unless - sub unless the number is a given value
+  * @v: pointer of type atomic_t
+  * @a: the amount to add to v...
+@@ -176,9 +202,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_sub_unchecked(i, v)	(void)atomic_sub_return_unchecked(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_add_unchecked(i, v)	(void)atomic_add_return_unchecked(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_inc_unchecked(v)	(void)atomic_add_return_unchecked(1, (v))
  
  #define atomic_dec_return(v)	atomic_sub_return(1, v)
  #define atomic_inc_return(v)	atomic_add_return(1, v)
@@ -456,17 +588,52 @@
  			       "sp %08lx ecr %lu\n",
 diff -urNp linux-2.6.31/arch/blackfin/include/asm/atomic.h linux-2.6.31/arch/blackfin/include/asm/atomic.h
 --- linux-2.6.31/arch/blackfin/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/blackfin/include/asm/atomic.h	2009-09-06 15:29:11.110254440 -0400
-@@ -81,6 +81,9 @@ static inline int atomic_test_mask(int m
- #define smp_mb__before_atomic_inc()    barrier()
- #define smp_mb__after_atomic_inc() barrier()
- 
-+#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))
++++ linux-2.6.31/arch/blackfin/include/asm/atomic.h	2009-09-11 22:53:53.058593048 -0400
+@@ -15,8 +15,10 @@
+ 
+ #define ATOMIC_INIT(i)	{ (i) }
+ #define atomic_set(v, i)	(((v)->counter) = i)
++#define atomic_set_unchecked(v, i)	(((v)->counter) = i)
+ 
+ #define atomic_read(v)	__raw_uncached_fetch_asm(&(v)->counter)
++#define atomic_read_unchecked(v)	__raw_uncached_fetch_asm(&(v)->counter)
+ 
+ asmlinkage int __raw_uncached_fetch_asm(const volatile int *ptr);
+ 
+@@ -35,11 +37,21 @@ static inline void atomic_add(int i, ato
+ 	__raw_atomic_update_asm(&v->counter, i);
+ }
+ 
++static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_add(i, (atomic_t *)v);
++}
++
+ static inline void atomic_sub(int i, atomic_t *v)
+ {
+ 	__raw_atomic_update_asm(&v->counter, -i);
+ }
+ 
++static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_sub(i, (atomic_t *)v);
++}
++
+ static inline int atomic_add_return(int i, atomic_t *v)
+ {
+ 	return __raw_atomic_update_asm(&v->counter, i);
+@@ -55,6 +67,11 @@ static inline void atomic_inc(volatile a
+ 	__raw_atomic_update_asm(&v->counter, 1);
+ }
+ 
++static inline void atomic_inc_unchecked(volatile atomic_unchecked_t *v)
++{
++	atomic_inc((atomic_t *)v);
++}
++
+ static inline void atomic_dec(volatile atomic_t *v)
+ {
+ 	__raw_atomic_update_asm(&v->counter, -1);
 diff -urNp linux-2.6.31/arch/blackfin/mach-bf561/coreb.c linux-2.6.31/arch/blackfin/mach-bf561/coreb.c
 --- linux-2.6.31/arch/blackfin/mach-bf561/coreb.c	2009-08-27 20:59:04.000000000 -0400
 +++ linux-2.6.31/arch/blackfin/mach-bf561/coreb.c	2009-09-06 15:29:11.110254440 -0400
@@ -505,32 +672,98 @@
  	.ioctl       = gpio_ioctl,
 diff -urNp linux-2.6.31/arch/cris/include/asm/atomic.h linux-2.6.31/arch/cris/include/asm/atomic.h
 --- linux-2.6.31/arch/cris/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/cris/include/asm/atomic.h	2009-09-06 15:29:11.112155258 -0400
-@@ -152,6 +152,10 @@ static inline int atomic_add_unless(atom
++++ linux-2.6.31/arch/cris/include/asm/atomic.h	2009-09-11 22:55:08.915710428 -0400
+@@ -16,7 +16,9 @@
+ #define ATOMIC_INIT(i)  { (i) }
+ 
+ #define atomic_read(v) ((v)->counter)
++#define atomic_read_unchecked(v) ((v)->counter)
+ #define atomic_set(v,i) (((v)->counter) = (i))
++#define atomic_set_unchecked(v,i) (((v)->counter) = (i))
+ 
+ /* These should be written in asm but we do it in C for now. */
+ 
+@@ -28,6 +30,11 @@ static inline void atomic_add(int i, vol
+ 	cris_atomic_restore(v, flags);
+ }
+ 
++static inline void atomic_add_unchecked(int i, volatile atomic_unchecked_t *v)
++{
++	atomic_add(i, (volatile atomic_t *)v);
++}
++
+ static inline void atomic_sub(int i, volatile atomic_t *v)
+ {
+ 	unsigned long flags;
+@@ -36,6 +43,11 @@ static inline void atomic_sub(int i, vol
+ 	cris_atomic_restore(v, flags);
  }
- #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()
++static inline void atomic_sub_unchecked(int i, volatile atomic_unchecked_t *v)
++{
++	atomic_sub(i, (volatile atomic_t *)v);
++}
++
+ static inline int atomic_add_return(int i, volatile atomic_t *v)
+ {
+ 	unsigned long flags;
+@@ -76,6 +88,11 @@ static inline void atomic_inc(volatile a
+ 	cris_atomic_restore(v, flags);
+ }
+ 
++static inline void atomic_inc_unchecked(volatile atomic_unchecked_t *v)
++{
++	atomic_inc((volatile atomic_t *)v);
++}
++
+ static inline void atomic_dec(volatile atomic_t *v)
+ {
+ 	unsigned long flags;
 diff -urNp linux-2.6.31/arch/frv/include/asm/atomic.h linux-2.6.31/arch/frv/include/asm/atomic.h
 --- linux-2.6.31/arch/frv/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/frv/include/asm/atomic.h	2009-09-06 15:29:11.112155258 -0400
-@@ -114,6 +114,10 @@ static inline void atomic_dec(atomic_t *
- 	atomic_sub_return(1, v);
++++ linux-2.6.31/arch/frv/include/asm/atomic.h	2009-09-11 21:49:34.085801883 -0400
+@@ -37,7 +37,9 @@
+ 
+ #define ATOMIC_INIT(i)		{ (i) }
+ #define atomic_read(v)		((v)->counter)
++#define atomic_read_unchecked(v)		((v)->counter)
+ #define atomic_set(v, i)	(((v)->counter) = (i))
++#define atomic_set_unchecked(v, i)	(((v)->counter) = (i))
+ 
+ #ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS
+ static inline int atomic_add_return(int i, atomic_t *v)
+@@ -99,16 +101,31 @@ static inline void atomic_add(int i, ato
+ 	atomic_add_return(i, 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))
++static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_add_return(i, (atomic_t *)v);
++}
 +
- #define atomic_dec_return(v)		atomic_sub_return(1, (v))
- #define atomic_inc_return(v)		atomic_add_return(1, (v))
+ static inline void atomic_sub(int i, atomic_t *v)
+ {
+ 	atomic_sub_return(i, v);
+ }
  
++static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_sub_return(i, (atomic_t *)v);
++}
++
+ static inline void atomic_inc(atomic_t *v)
+ {
+ 	atomic_add_return(1, v);
+ }
+ 
++static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
++{
++	atomic_add_return(1, (atomic_t *)v);
++}
++
+ static inline void atomic_dec(atomic_t *v)
+ {
+ 	atomic_sub_return(1, v);
 diff -urNp linux-2.6.31/arch/frv/include/asm/kmap_types.h linux-2.6.31/arch/frv/include/asm/kmap_types.h
 --- linux-2.6.31/arch/frv/include/asm/kmap_types.h	2009-08-27 20:59:04.000000000 -0400
 +++ linux-2.6.31/arch/frv/include/asm/kmap_types.h	2009-09-06 15:29:11.113186643 -0400
@@ -544,28 +777,56 @@
  
 diff -urNp linux-2.6.31/arch/h8300/include/asm/atomic.h linux-2.6.31/arch/h8300/include/asm/atomic.h
 --- linux-2.6.31/arch/h8300/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/h8300/include/asm/atomic.h	2009-09-06 15:29:11.113186643 -0400
-@@ -26,6 +26,7 @@ static __inline__ int atomic_add_return(
++++ linux-2.6.31/arch/h8300/include/asm/atomic.h	2009-09-11 22:59:01.477552220 -0400
+@@ -11,7 +11,9 @@
+ #define ATOMIC_INIT(i)	{ (i) }
+ 
+ #define atomic_read(v)		((v)->counter)
++#define atomic_read_unchecked(v)		((v)->counter)
+ #define atomic_set(v, i)	(((v)->counter) = i)
++#define atomic_set_unchecked(v, i)	(((v)->counter) = i)
+ 
+ #include <asm/system.h>
+ #include <linux/kernel.h>
+@@ -25,7 +27,13 @@ static __inline__ int atomic_add_return(
+ 	return ret;
  }
  
++static __inline__ int atomic_add_return_unchecked(int i, atomic_unchecked_t *v)
++{
++	return atomic_add_return(i, (atomic_t *)v);
++}
++
  #define atomic_add(i, v) atomic_add_return(i, v)
-+#define atomic_add_unchecked(i, v) atomic_add((i), (v))
++#define atomic_add_unchecked(i, v) atomic_add_return_unchecked(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(
+@@ -37,7 +45,13 @@ static __inline__ int atomic_sub_return(
+ 	return ret;
  }
  
++static __inline__ int atomic_sub_return_unchecked(int i, atomic_unchecked_t *v)
++{
++	return atomic_sub_return(i, (atomic_t *)v);
++}
++
  #define atomic_sub(i, v) atomic_sub_return(i, v)
-+#define atomic_subUnchecked(i, v) atomic_sub(i, v)
++#define atomic_sub_unchecked(i, v) atomic_sub_return_unchecked(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(
+@@ -50,7 +64,13 @@ static __inline__ int atomic_inc_return(
+ 	return ret;
  }
  
++static __inline__ int atomic_inc_return_unchecked(atomic_unchecked_t *v)
++{
++	return atomic_inc_return((atomic_t *)v);
++}
++
  #define atomic_inc(v) atomic_inc_return(v)
-+#define atomic_inc_unchecked(v) atomic_inc(v)
++#define atomic_inc_unchecked(v) atomic_inc_return_unchecked(v)
  
  /*
   * atomic_inc_and_test - increment and test
@@ -621,16 +882,28 @@
  
 diff -urNp linux-2.6.31/arch/ia64/include/asm/atomic.h linux-2.6.31/arch/ia64/include/asm/atomic.h
 --- linux-2.6.31/arch/ia64/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/ia64/include/asm/atomic.h	2009-09-06 15:29:11.114322463 -0400
-@@ -201,8 +201,11 @@ atomic64_add_negative (__s64 i, atomic64
++++ linux-2.6.31/arch/ia64/include/asm/atomic.h	2009-09-11 22:02:02.446796802 -0400
+@@ -22,9 +22,11 @@
+ #define ATOMIC64_INIT(i)	((atomic64_t) { (i) })
+ 
+ #define atomic_read(v)		((v)->counter)
++#define atomic_read_unchecked(v)	((v)->counter)
+ #define atomic64_read(v)	((v)->counter)
+ 
+ #define atomic_set(v,i)		(((v)->counter) = (i))
++#define atomic_set_unchecked(v,i)	(((v)->counter) = (i))
+ #define atomic64_set(v,i)	(((v)->counter) = (i))
+ 
+ static __inline__ int
+@@ -201,8 +203,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_add_unchecked(i,v)	atomic_add((i), (atomic_t *)(v))
  #define atomic_sub(i,v)			atomic_sub_return((i), (v))
-+#define atomic_sub_unchecked(i,v)	atomic_sub((i), (v))
++#define atomic_sub_unchecked(i,v)	atomic_sub((i), (atomic_t *)(v))
  #define atomic_inc(v)			atomic_add(1, (v))
-+#define atomic_inc_unchecked(v)		atomic_inc(v)
++#define atomic_inc_unchecked(v)		atomic_inc((atomic_t *)(v))
  #define atomic_dec(v)			atomic_sub(1, (v))
  
  #define atomic64_add(i,v)		atomic64_add_return((i), (v))
@@ -890,14 +1163,45 @@
  		if (insert_vm_struct(current->mm, vma)) {
 diff -urNp linux-2.6.31/arch/m32r/include/asm/atomic.h linux-2.6.31/arch/m32r/include/asm/atomic.h
 --- linux-2.6.31/arch/m32r/include/asm/atomic.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/m32r/include/asm/atomic.h	2009-09-06 15:29:11.118236580 -0400
-@@ -308,6 +308,10 @@ static __inline__ void atomic_set_mask(u
++++ linux-2.6.31/arch/m32r/include/asm/atomic.h	2009-09-11 22:04:17.637685200 -0400
+@@ -29,6 +29,14 @@
+ #define atomic_read(v)	((v)->counter)
+ 
+ /**
++ * atomic_read_unchecked - read atomic variable
++ * @v: pointer of type atomic_unchecked_t
++ *
++ * Atomically reads the value of @v.
++ */
++#define atomic_read_unchecked(v)	((v)->counter)
++
++/**
+  * atomic_set - set atomic variable
+  * @v: pointer of type atomic_t
+  * @i: required value
+@@ -38,6 +46,15 @@
+ #define atomic_set(v,i)	(((v)->counter) = (i))
+ 
+ /**
++ * atomic_set_unchecked - set atomic variable
++ * @v: pointer of type atomic_unchecked_t
++ * @i: required value
++ *
++ * Atomically sets the value of @v to @i.
++ */
++#define atomic_set_unchecked(v,i)	(((v)->counter) = (i))
++
++/**
+  * atomic_add_return - add integer to atomic variable and return it
+  * @i: integer value to add
+  * @v: pointer of type atomic_t
+@@ -308,6 +325,10 @@ static __inline__ void atomic_set_mask(u
  	local_irq_restore(flags);
  }
  
-+#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_unchecked(v)		atomic_inc((atomic_t *)(v))
++#define atomic_add_unchecked(i,v)	atomic_add((i),(atomic_t *)(v))
++#define atomic_sub_unchecked(i,v)	atomic_sub((i),(atomic_t *)(v))
 +
  /* Atomic operations are already serializing on m32r */
  #define smp_mb__before_atomic_dec()	barrier()
@@ -927,41 +1231,138 @@
  		__copy_user_zeroing(to,from,n);
 diff -urNp linux-2.6.31/arch/m68k/include/asm/atomic_mm.h linux-2.6.31/arch/m68k/include/asm/atomic_mm.h
 --- linux-2.6.31/arch/m68k/include/asm/atomic_mm.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/m68k/include/asm/atomic_mm.h	2009-09-06 15:29:11.118236580 -0400
-@@ -186,6 +186,10 @@ static __inline__ int atomic_add_unless(
++++ linux-2.6.31/arch/m68k/include/asm/atomic_mm.h	2009-09-12 09:48:47.937349132 -0400
+@@ -16,23 +16,40 @@
+ #define ATOMIC_INIT(i)	{ (i) }
+ 
+ #define atomic_read(v)		((v)->counter)
++#define atomic_read_unchecked(v)	((v)->counter)
+ #define atomic_set(v, i)	(((v)->counter) = i)
++#define atomic_set_unchecked(v, i)	(((v)->counter) = i)
  
- #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+ static inline void atomic_add(int i, atomic_t *v)
+ {
+ 	__asm__ __volatile__("addl %1,%0" : "+m" (*v) : "id" (i));
+ }
  
-+#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))
++static inline void atomic_add_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_add(i, (atomic_t *)v);
++}
 +
- /* Atomic operations are already serializing */
- #define smp_mb__before_atomic_dec()	barrier()
- #define smp_mb__after_atomic_dec()	barrier()
+ static inline void atomic_sub(int i, atomic_t *v)
+ {
+ 	__asm__ __volatile__("subl %1,%0" : "+m" (*v) : "id" (i));
+ }
+ 
++static inline void atomic_sub_unchecked(int i, atomic_unchecked_t *v)
++{
++	atomic_sub(i, (atomic_t *)v);
++}
++
+ static inline void atomic_inc(atomic_t *v)
+ {
+ 	__asm__ __volatile__("addql #1,%0" : "+m" (*v));
+ }
+ 
++static inline void atomic_inc_unchecked(atomic_unchecked_t *v)
++{
++	atomic_inc((atomic_t *)v);
++}
++
+ static inline void atomic_dec(atomic_t *v)
+ {
+ 	__asm__ __volatile__("subql #1,%0" : "+m" (*v));
 diff -urNp linux-2.6.31/arch/m68k/include/asm/atomic_no.h linux-2.6.31/arch/m68k/include/asm/atomic_no.h
 --- linux-2.6.31/arch/m68k/include/asm/atomic_no.h	2009-08-27 20:59:04.000000000 -0400
-+++ linux-2.6.31/arch/m68k/include/asm/atomic_no.h	2009-09-06 15:29:11.119214787 -0400
-@@ -151,5 +151,9 @@ static __inline__ int atomic_add_unless(
- #define atomic_dec_return(v) atomic_sub_return(1,(v))
- #define atomic_inc_return(v) atomic_add_return(1,(v))
- 
-+#define atomic_inc_unchecked(v) atomic_inc((v))
-+#define atomic_add_unchecked(i,v) atomic_add((i),(v))
<<Diff was trimmed, longer than 597 lines>>

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



More information about the pld-cvs-commit mailing list