rpms/kernel/devel patch-2.6.15-git5.bz2.sign, NONE, 1.1 .cvsignore, 1.317, 1.318 kernel-2.6.spec, 1.1833, 1.1834 linux-2.6-debug-singlebiterror.patch, 1.1, 1.2 linux-2.6-debug-taint-vm.patch, 1.3, 1.4 linux-2.6-diskdump.patch, 1.4, 1.5 linux-2.6-execshield.patch, 1.5, 1.6 linux-2.6-gcc41.patch, 1.6, 1.7 linux-2.6-tux.patch, 1.8, 1.9 linux-2.6-vm-clear-unreclaimable.patch, 1.1, 1.2 linux-2.6-x86-tune-p4.patch, 1.2, 1.3 sources, 1.259, 1.260 upstream, 1.240, 1.241 linux-2.6-debug-taint-check.patch, 1.2, NONE linux-2.6-debug-taint-proprietary-helpers.patch, 1.1, NONE linux-2.6-vm-debug.patch, 1.1, NONE patch-2.6.15-git3.bz2.sign, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Jan 9 18:55:18 UTC 2006


Author: davej

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv20768

Modified Files:
	.cvsignore kernel-2.6.spec 
	linux-2.6-debug-singlebiterror.patch 
	linux-2.6-debug-taint-vm.patch linux-2.6-diskdump.patch 
	linux-2.6-execshield.patch linux-2.6-gcc41.patch 
	linux-2.6-tux.patch linux-2.6-vm-clear-unreclaimable.patch 
	linux-2.6-x86-tune-p4.patch sources upstream 
Added Files:
	patch-2.6.15-git5.bz2.sign 
Removed Files:
	linux-2.6-debug-taint-check.patch 
	linux-2.6-debug-taint-proprietary-helpers.patch 
	linux-2.6-vm-debug.patch patch-2.6.15-git3.bz2.sign 
Log Message:
git5



--- NEW FILE patch-2.6.15-git5.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBDwhzCyGugalF9Dw4RAkdqAJ4sXElSzpfYfvRsHvJDTSXkSn4bJwCfcMZo
QLJ1m1slwLzAgQae1pqqJrk=
=aaG1
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.317
retrieving revision 1.318
diff -u -r1.317 -r1.318
--- .cvsignore	8 Jan 2006 02:04:10 -0000	1.317
+++ .cvsignore	9 Jan 2006 18:55:14 -0000	1.318
@@ -2,6 +2,6 @@
 temp-*
 kernel-2.6.15
 linux-2.6.15.tar.bz2
-patch-2.6.15-git3.bz2
 bcm43xx-20060106.tar.bz2
 ieee80211softmac-20060103.tar.bz2
+patch-2.6.15-git5.bz2


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.1833
retrieving revision 1.1834
diff -u -r1.1833 -r1.1834
--- kernel-2.6.spec	8 Jan 2006 01:59:03 -0000	1.1833
+++ kernel-2.6.spec	9 Jan 2006 18:55:14 -0000	1.1834
@@ -206,7 +206,7 @@
 #
 # Patches 0 through 100 are meant for core subsystem upgrades
 #
-Patch1: patch-2.6.15-git3.bz2
+Patch1: patch-2.6.15-git5.bz2
 #Patch2: patch-2.6.16-rc1-git1.bz2
 
 # Patches 100 through 500 are meant for architecture patches
@@ -284,7 +284,6 @@
 Patch1011: linux-2.6-debug-slab-backtrace.patch
 Patch1012: linux-2.6-debug-list_head.patch
 Patch1013: linux-2.6-debug-taint-vm.patch
-Patch1014: linux-2.6-debug-taint-check.patch
 Patch1015: linux-2.6-debug-singlebiterror.patch
 Patch1016: linux-2.6-debug-spinlock-taint.patch
 Patch1017: linux-2.6-debug-spinlock-panic.patch
@@ -293,7 +292,6 @@
 Patch1020: linux-2.6-debug-sleep-in-irq-warning.patch
 Patch1021: linux-2.6-debug-reference-discarded-return-result.patch
 Patch1022: linux-2.6-debug-panic-stackdump.patch
-Patch1023: linux-2.6-debug-taint-proprietary-helpers.patch
 Patch1024: linux-2.6-debug-dual-line-backtrace.patch
 Patch1025: linux-2.6-debug-sysfs-crash-debugging.patch
 Patch1026: linux-2.6-debug-no-quiet.patch
@@ -373,8 +371,7 @@
 # VM bits.
 Patch2000: linux-2.6-vm-oomkiller-debugging.patch
 Patch2001: linux-2.6-vm-silence-atomic-alloc-failures.patch
-Patch2002: linux-2.6-vm-debug.patch
-Patch2003: linux-2.6-vm-clear-unreclaimable.patch
+Patch2002: linux-2.6-vm-clear-unreclaimable.patch
 
 # ACPI patches.
 Patch2100: linux-2.6-acpi-thinkpad-c2c3.patch
@@ -708,7 +705,7 @@
 %endif
 
 # Fix up the vdso.
-%patch812 -p1
+#%patch812 -p1
 
 # Xen vDSO hack
 %if %{includexen}
@@ -738,7 +735,6 @@
 %patch1011 -p1
 %patch1012 -p1
 %patch1013 -p1
-%patch1014 -p1
 %patch1015 -p1
 %patch1016 -p1
 %patch1017 -p1
@@ -747,11 +743,11 @@
 %patch1020 -p1
 %patch1021 -p1
 %patch1022 -p1
-%patch1023 -p1
 %patch1024 -p1
 %patch1025 -p1
 %patch1026 -p1
-%patch1027 -p1
+# Slab leak detector.
+#%patch1027 -p1
 %patch1028 -p1
 #%patch1029 -p1
 #%patch1030 -p1
@@ -878,10 +874,8 @@
 %patch2000 -p1
 # Silence GFP_ATOMIC failures.
 %patch2001 -p1
-# Try to trace some negative pagecount errors.
-%patch2002 -p1
 # VM oom killer tweaks.
-%patch2003 -p1
+%patch2002 -p1
 
 # ACPI patches.
 # Blacklist another 'No C2/C3 states' Thinkpad R40e BIOS.
@@ -1392,6 +1386,9 @@
 %endif
 
 %changelog
+* Mon Jan  9 2006 Dave Jones <davej at redhat.com>
+- 2.6.15-git5
+
 * Sat Jan 07 2006 Dave Jones <davej at redhat.com>
 - 2.6.15-git3
 

linux-2.6-debug-singlebiterror.patch:
 slab.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+)

Index: linux-2.6-debug-singlebiterror.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-debug-singlebiterror.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-debug-singlebiterror.patch	8 Aug 2005 21:59:34 -0000	1.1
+++ linux-2.6-debug-singlebiterror.patch	9 Jan 2006 18:55:15 -0000	1.2
@@ -1,18 +1,17 @@
---- linux-2.6.11/mm/slab.c~	2005-05-01 00:51:59.000000000 -0400
-+++ linux-2.6.11/mm/slab.c	2005-05-01 01:19:38.000000000 -0400
-@@ -1004,8 +1004,12 @@ static void poison_obj(kmem_cache_t *cac
+--- linux-2.6.15/mm/slab.c~	2006-01-09 13:25:17.000000000 -0500
++++ linux-2.6.15/mm/slab.c	2006-01-09 13:26:01.000000000 -0500
+@@ -1313,8 +1313,11 @@ static void poison_obj(kmem_cache_t *cac
  static void dump_line(char *data, int offset, int limit)
  {
  	int i;
 +	unsigned char total=0;
-+
  	printk(KERN_ERR "%03x:", offset);
- 	for (i=0;i<limit;i++) {
+ 	for (i = 0; i < limit; i++) {
 +		if (data[offset+i] != POISON_FREE)
 +			total += data[offset+i];
- 		if (check_tainted() == 0)
- 			printk(" %02x", (unsigned char)data[offset+i]);
- 		else {
+ 		printk(" %02x", (unsigned char)data[offset + i]);
+ 	}
+ 	printk("\n");
 @@ -1019,6 +1023,18 @@ static void dump_line(char *data, int of
  		}
  	}

linux-2.6-debug-taint-vm.patch:
 linux-2.6.11/include/asm-generic/bug.h |    8 ++++++--
 linux-2.6.15/mm/page_alloc.c           |    4 ++--
 linux-2.6.15/mm/slab.c                 |    4 ++--
 linux-2000/kernel/panic.c              |    1 +
 4 files changed, 11 insertions(+), 6 deletions(-)

Index: linux-2.6-debug-taint-vm.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-debug-taint-vm.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-debug-taint-vm.patch	8 Jan 2006 01:59:03 -0000	1.3
+++ linux-2.6-debug-taint-vm.patch	9 Jan 2006 18:55:15 -0000	1.4
@@ -53,17 +53,16 @@
  	dump_stack();
  	page->flags &= ~(1 << PG_lru	|
  			1 << PG_private |
-diff -urNp --exclude-from=/home/davej/.exclude linux-1740/mm/slab.c linux-2000/mm/slab.c
---- linux-1740/mm/slab.c
-+++ linux-2000/mm/slab.c
-@@ -1053,8 +1053,8 @@ static void check_poison_obj(kmem_cache_
- 			/* Mismatch ! */
+--- linux-2.6.15/mm/slab.c~	2006-01-09 13:19:33.000000000 -0500
++++ linux-2.6.15/mm/slab.c	2006-01-09 13:19:55.000000000 -0500
+@@ -1371,8 +1371,8 @@ static void check_poison_obj(kmem_cache_
  			/* Print header */
  			if (lines == 0) {
--				printk(KERN_ERR "Slab corruption: start=%p, len=%d\n",
--						realobj, size);
-+				printk(KERN_ERR "Slab corruption: (%s) start=%p, len=%d\n",
-+						print_tainted(), realobj, size);
+ 				printk(KERN_ERR
+-				       "Slab corruption: start=%p, len=%d\n",
+-				       realobj, size);
++				       "Slab corruption: (%s) start=%p, len=%d\n",
++				       print_tainted(), realobj, size);
  				print_objinfo(cachep, objp, 0);
+ 				dump_stack();
  			}
- 			/* Hexdump the affected line */

linux-2.6-diskdump.patch:
 drivers/block/Kconfig          |    5 
 drivers/block/Makefile         |    1 
 drivers/block/diskdump.c       | 1121 +++++++++++++++++++++++++++++++++++++++++
 include/asm-generic/diskdump.h |   13 
 include/asm-i386/diskdump.h    |   55 ++
 include/asm-ia64/diskdump.h    |   63 ++
 include/asm-powerpc/diskdump.h |   55 ++
 include/asm-ppc/diskdump.h     |    6 
 include/asm-s390/diskdump.h    |    6 
 include/asm-x86_64/diskdump.h  |   44 +
 include/linux/diskdump.h       |  186 ++++++
 include/linux/interrupt.h      |    4 
 include/linux/timer.h          |    3 
 include/linux/workqueue.h      |    3 
 kernel/softirq.c               |   32 +
 kernel/timer.c                 |   43 +
 kernel/workqueue.c             |   34 +
 17 files changed, 1670 insertions(+), 4 deletions(-)

Index: linux-2.6-diskdump.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-diskdump.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-diskdump.patch	27 Nov 2005 03:21:31 -0000	1.4
+++ linux-2.6-diskdump.patch	9 Jan 2006 18:55:15 -0000	1.5
@@ -1233,11 +1233,10 @@
  	open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);
 --- linux-2.6.12/kernel/timer.c.diskdump.orig	2005-08-19 16:44:27.502410144 -0400
 +++ linux-2.6.12/kernel/timer.c	2005-08-19 16:49:13.988620772 -0400
-@@ -33,6 +33,8 @@
- #include <linux/posix-timers.h>
+@@ -34,6 +34,7 @@
  #include <linux/cpu.h>
  #include <linux/syscalls.h>
-+#include <linux/delay.h>
+ #include <linux/delay.h>
 +#include <linux/diskdump.h>
  
  #include <asm/uaccess.h>

linux-2.6-execshield.patch:
 linux-2.6.15/fs/proc/base.c                                   |    2 
 linux-exec-shield-curr.q/arch/i386/kernel/asm-offsets.c       |    1 
 linux-exec-shield-curr.q/arch/i386/kernel/cpu/common.c        |    7 
 linux-exec-shield-curr.q/arch/i386/kernel/entry.S             |    8 
 linux-exec-shield-curr.q/arch/i386/kernel/process.c           |   59 +++
 linux-exec-shield-curr.q/arch/i386/kernel/signal.c            |    4 
 linux-exec-shield-curr.q/arch/i386/kernel/smp.c               |    3 
 linux-exec-shield-curr.q/arch/i386/kernel/sysenter.c          |   65 +++
 linux-exec-shield-curr.q/arch/i386/kernel/traps.c             |   93 ++++-
 linux-exec-shield-curr.q/arch/i386/kernel/vsyscall-sysenter.S |    6 
 linux-exec-shield-curr.q/arch/i386/kernel/vsyscall.lds.S      |    4 
 linux-exec-shield-curr.q/arch/i386/mm/init.c                  |    6 
 linux-exec-shield-curr.q/arch/i386/mm/mmap.c                  |    6 
 linux-exec-shield-curr.q/arch/ia64/ia32/binfmt_elf32.c        |    2 
 linux-exec-shield-curr.q/arch/x86_64/ia32/ia32_binfmt.c       |    4 
 linux-exec-shield-curr.q/arch/x86_64/kernel/process.c         |    6 
 linux-exec-shield-curr.q/arch/x86_64/kernel/setup64.c         |   23 -
 linux-exec-shield-curr.q/arch/x86_64/mm/Makefile              |    2 
 linux-exec-shield-curr.q/arch/x86_64/mm/fault.c               |    2 
 linux-exec-shield-curr.q/arch/x86_64/mm/mmap.c                |   95 +++++
 linux-exec-shield-curr.q/drivers/char/random.c                |    7 
 linux-exec-shield-curr.q/fs/binfmt_elf.c                      |  131 +++++--
 linux-exec-shield-curr.q/fs/proc/array.c                      |    8 
 linux-exec-shield-curr.q/fs/proc/base.c                       |    4 
 linux-exec-shield-curr.q/fs/proc/task_mmu.c                   |   34 +
 linux-exec-shield-curr.q/include/asm-i386/desc.h              |   14 
 linux-exec-shield-curr.q/include/asm-i386/elf.h               |   49 +-
 linux-exec-shield-curr.q/include/asm-i386/mmu.h               |    6 
 linux-exec-shield-curr.q/include/asm-i386/page.h              |    5 
 linux-exec-shield-curr.q/include/asm-i386/pgalloc.h           |    1 
 linux-exec-shield-curr.q/include/asm-i386/processor.h         |    8 
 linux-exec-shield-curr.q/include/asm-i386/thread_info.h       |    1 
 linux-exec-shield-curr.q/include/asm-ia64/pgalloc.h           |    4 
 linux-exec-shield-curr.q/include/asm-powerpc/pgalloc.h        |    5 
 linux-exec-shield-curr.q/include/asm-ppc/pgalloc.h            |    5 
 linux-exec-shield-curr.q/include/asm-s390/pgalloc.h           |    4 
 linux-exec-shield-curr.q/include/asm-sparc/pgalloc.h          |    4 
 linux-exec-shield-curr.q/include/asm-sparc64/pgalloc.h        |    4 
 linux-exec-shield-curr.q/include/asm-x86_64/pgalloc.h         |    7 
 linux-exec-shield-curr.q/include/asm-x86_64/pgtable.h         |    2 
 linux-exec-shield-curr.q/include/asm-x86_64/processor.h       |    5 
 linux-exec-shield-curr.q/include/linux/mm.h                   |   16 
 linux-exec-shield-curr.q/include/linux/resource.h             |    5 
 linux-exec-shield-curr.q/include/linux/sched.h                |    9 
 linux-exec-shield-curr.q/include/linux/sysctl.h               |    3 
 linux-exec-shield-curr.q/kernel/signal.c                      |   38 ++
 linux-exec-shield-curr.q/kernel/sysctl.c                      |   47 ++
 linux-exec-shield-curr.q/mm/fremap.c                          |   16 
 linux-exec-shield-curr.q/mm/mmap.c                            |  183 +++++++++-
 linux-exec-shield-curr.q/mm/mprotect.c                        |    5 
 linux-exec-shield-curr.q/mm/mremap.c                          |    4 
 51 files changed, 902 insertions(+), 130 deletions(-)

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-execshield.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- linux-2.6-execshield.patch	30 Dec 2005 00:31:33 -0000	1.5
+++ linux-2.6-execshield.patch	9 Jan 2006 18:55:15 -0000	1.6
@@ -1,6 +1,7 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/asm-offsets.c linux-810/arch/i386/kernel/asm-offsets.c
---- linux-804/arch/i386/kernel/asm-offsets.c
-+++ linux-810/arch/i386/kernel/asm-offsets.c
+Index: linux-exec-shield-curr.q/arch/i386/kernel/asm-offsets.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/asm-offsets.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/asm-offsets.c
 @@ -53,6 +53,7 @@ void foo(void)
  	OFFSET(TI_preempt_count, thread_info, preempt_count);
  	OFFSET(TI_addr_limit, thread_info, addr_limit);
@@ -9,9 +10,28 @@
  	BLANK();
  
  	OFFSET(EXEC_DOMAIN_handler, exec_domain, handler);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/entry.S linux-810/arch/i386/kernel/entry.S
---- linux-804/arch/i386/kernel/entry.S
-+++ linux-810/arch/i386/kernel/entry.S
+Index: linux-exec-shield-curr.q/arch/i386/kernel/cpu/common.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/cpu/common.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/cpu/common.c
+@@ -392,6 +392,13 @@ void __devinit identify_cpu(struct cpuin
+ 	if (disable_pse)
+ 		clear_bit(X86_FEATURE_PSE, c->x86_capability);
+ 
++	if (exec_shield != 0) {
++#ifdef CONFIG_HIGHMEM64G   /* NX implies PAE */
++		if (!test_bit(X86_FEATURE_NX, c->x86_capability))
++#endif
++		clear_bit(X86_FEATURE_SEP, c->x86_capability);
++	}
++
+ 	/* If the model name is still unset, do table lookup. */
+ 	if ( !c->x86_model_id[0] ) {
+ 		char *p;
+Index: linux-exec-shield-curr.q/arch/i386/kernel/entry.S
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/entry.S
++++ linux-exec-shield-curr.q/arch/i386/kernel/entry.S
 @@ -184,8 +184,12 @@ sysenter_past_esp:
  	pushl %ebp
  	pushfl
@@ -27,10 +47,11 @@
  /*
   * Load the potential sixth argument from user stack.
   * Careful about security.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/process.c linux-810/arch/i386/kernel/process.c
---- linux-804/arch/i386/kernel/process.c
-+++ linux-810/arch/i386/kernel/process.c
-@@ -676,6 +676,8 @@ struct task_struct fastcall * __switch_t
+Index: linux-exec-shield-curr.q/arch/i386/kernel/process.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/process.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/process.c
+@@ -652,6 +652,8 @@ struct task_struct fastcall * __switch_t
  	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
  
  	__unlazy_fpu(prev_p);
@@ -39,7 +60,7 @@
  
  	/*
  	 * Reload esp0.
-@@ -949,3 +951,60 @@ unsigned long arch_align_stack(unsigned 
+@@ -925,3 +927,60 @@ unsigned long arch_align_stack(unsigned 
  		sp -= get_random_int() % 8192;
  	return sp & ~0xf;
  }
@@ -100,10 +121,11 @@
 +		current->mm->brk = new_brk;
 +}
 +
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/signal.c linux-810/arch/i386/kernel/signal.c
---- linux-804/arch/i386/kernel/signal.c
-+++ linux-810/arch/i386/kernel/signal.c
-@@ -380,7 +380,7 @@ static int setup_frame(int sig, struct k
+Index: linux-exec-shield-curr.q/arch/i386/kernel/signal.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/signal.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/signal.c
+@@ -384,7 +384,7 @@ static int setup_frame(int sig, struct k
  			goto give_sigsegv;
  	}
  
@@ -112,7 +134,7 @@
  	if (ka->sa.sa_flags & SA_RESTORER)
  		restorer = ka->sa.sa_restorer;
  
-@@ -476,7 +476,7 @@ static int setup_rt_frame(int sig, struc
+@@ -480,7 +480,7 @@ static int setup_rt_frame(int sig, struc
  		goto give_sigsegv;
  
  	/* Set up to return from userspace.  */
@@ -121,10 +143,11 @@
  	if (ka->sa.sa_flags & SA_RESTORER)
  		restorer = ka->sa.sa_restorer;
  	err |= __put_user(restorer, &frame->pretcode);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/smp.c linux-810/arch/i386/kernel/smp.c
---- linux-804/arch/i386/kernel/smp.c
-+++ linux-810/arch/i386/kernel/smp.c
-@@ -24,6 +24,7 @@
+Index: linux-exec-shield-curr.q/arch/i386/kernel/smp.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/smp.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/smp.c
+@@ -23,6 +23,7 @@
  
  #include <asm/mtrr.h>
  #include <asm/tlbflush.h>
@@ -132,7 +155,7 @@
  #include <mach_apic.h>
  
  /*
-@@ -315,6 +316,8 @@ fastcall void smp_invalidate_interrupt(s
+@@ -314,6 +315,8 @@ fastcall void smp_invalidate_interrupt(s
  	unsigned long cpu;
  
  	cpu = get_cpu();
@@ -141,9 +164,10 @@
  
  	if (!cpu_isset(cpu, flush_cpumask))
  		goto out;
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/sysenter.c linux-810/arch/i386/kernel/sysenter.c
---- linux-804/arch/i386/kernel/sysenter.c
-+++ linux-810/arch/i386/kernel/sysenter.c
+Index: linux-exec-shield-curr.q/arch/i386/kernel/sysenter.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/sysenter.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/sysenter.c
 @@ -13,6 +13,7 @@
  #include <linux/gfp.h>
  #include <linux/string.h>
@@ -152,79 +176,97 @@
  
  #include <asm/cpufeature.h>
  #include <asm/msr.h>
-@@ -46,11 +47,20 @@ void enable_sep_cpu(void)
+@@ -36,7 +37,7 @@ void enable_sep_cpu(void)
+ 	wrmsr(MSR_IA32_SYSENTER_CS, __KERNEL_CS, 0);
+ 	wrmsr(MSR_IA32_SYSENTER_ESP, tss->esp1, 0);
+ 	wrmsr(MSR_IA32_SYSENTER_EIP, (unsigned long) sysenter_entry, 0);
+-	put_cpu();	
++	put_cpu();
+ }
+ 
+ /*
+@@ -46,11 +47,13 @@ void enable_sep_cpu(void)
  extern const char vsyscall_int80_start, vsyscall_int80_end;
  extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
  
-+struct page *sysenter_page;
++static struct page *sysenter_pages[2];
 +
  int __init sysenter_setup(void)
  {
  	void *page = (void *)get_zeroed_page(GFP_ATOMIC);
  
 -	__set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_READONLY_EXEC);
-+	/*
-+	 * We keep this page mapped readonly, even though the executable
-+	 * portion is randomized into a userspace vma - so that we dont
-+	 * have to fix up the data within the VDSO page every time we
-+	 * exec().
-+	 */
-+	__set_fixmap(FIX_VSYSCALL, __pa(page), PAGE_KERNEL_RO);
-+	sysenter_page = virt_to_page(page);
++	sysenter_pages[0] = virt_to_page(page);
  
  	if (!boot_cpu_has(X86_FEATURE_SEP)) {
  		memcpy(page,
-@@ -65,3 +75,46 @@ int __init sysenter_setup(void)
+@@ -65,3 +68,61 @@ int __init sysenter_setup(void)
  
  	return 0;
  }
 +
 +extern void SYSENTER_RETURN_OFFSET;
 +
-+unsigned int vdso_enabled = 0;
++unsigned int vdso_enabled = 1;
 +
-+void map_vsyscall(void)
++/*
++ * This is called from binfmt_elf, we create the special vma for the
++ * vDSO and insert it into the mm struct tree.
++ */
++int arch_setup_additional_pages(struct linux_binprm *bprm,
++				int executable_stack)
 +{
 +	struct thread_info *ti = current_thread_info();
-+	struct vm_area_struct *vma;
-+	unsigned long addr;
++	unsigned long addr, len;
++	int err;
 +
-+	if (unlikely(!vdso_enabled)) {
 +		current->mm->context.vdso = NULL;
-+		return;
-+	}
++	if (unlikely(!vdso_enabled) || unlikely(!sysenter_pages[0]))
++		return 0;
 +
 +	/*
 +	 * Map the vDSO (it will be randomized):
 +	 */
 +	down_write(&current->mm->mmap_sem);
-+	addr = do_mmap(NULL, 0, 4096, PROT_READ | PROT_EXEC, MAP_PRIVATE, 0);
-+	current->mm->context.vdso = (void *)addr;
-+	ti->sysenter_return = (void *)addr + (long)&SYSENTER_RETURN_OFFSET;
-+	if (addr != -1) {
-+		vma = find_vma(current->mm, addr);
-+		if (vma) {
-+			pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
-+			get_page(sysenter_page);
-+			install_page(current->mm, vma, addr,
-+					sysenter_page, vma->vm_page_prot);
-+			
++	len = PAGE_SIZE > ELF_EXEC_PAGESIZE ? PAGE_SIZE : ELF_EXEC_PAGESIZE;
++	addr = get_unmapped_area_prot(NULL, 0, len, 0,
++				      MAP_PRIVATE, PROT_READ | PROT_EXEC);
++	if (unlikely(addr & ~PAGE_MASK)) {
++		up_write(&current->mm->mmap_sem);
++		return addr;
 +		}
++	err = install_special_mapping(current->mm, addr, len,
++				      VM_DONTEXPAND | VM_READ | VM_EXEC |
++				      VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
++				      PAGE_READONLY_EXEC,
++				      sysenter_pages);
++	if (likely(err == 0)) {
++		current->mm->context.vdso = (void *)addr;
++		ti->sysenter_return = &SYSENTER_RETURN_OFFSET + addr;
 +	}
 +	up_write(&current->mm->mmap_sem);
++	return err;
 +}
 +
-+static int __init vdso_setup(char *str)
++int in_gate_area_no_task(unsigned long addr)
 +{
-+        vdso_enabled = simple_strtoul(str, NULL, 0);
-+        return 1;
++	return 0;
++}
++
++int in_gate_area(struct task_struct *task, unsigned long addr)
++{
++	return 0;
 +}
-+__setup("vdso=", vdso_setup);
 +
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/traps.c linux-810/arch/i386/kernel/traps.c
---- linux-804/arch/i386/kernel/traps.c
-+++ linux-810/arch/i386/kernel/traps.c
-@@ -458,13 +458,89 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
++struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
++{
++	return NULL;
++}
+Index: linux-exec-shield-curr.q/arch/i386/kernel/traps.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/traps.c
++++ linux-exec-shield-curr.q/arch/i386/kernel/traps.c
+@@ -461,7 +461,82 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
  DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
  DO_ERROR(12, SIGBUS,  "stack segment", stack_segment)
  DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
@@ -262,7 +304,7 @@
 +	set_user_cs(&current->mm->context.user_cs, limit);
 +
 +	desc1 = &current->mm->context.user_cs;
-+	desc2 = per_cpu(cpu_gdt_table, cpu) + GDT_ENTRY_DEFAULT_USER_CS;
++	desc2 = get_cpu_gdt_table(cpu) + GDT_ENTRY_DEFAULT_USER_CS;
 +
 +	if (desc1->a != desc2->a || desc1->b != desc2->b) {
 +		/*
@@ -308,14 +350,15 @@
  
  fastcall void __kprobes do_general_protection(struct pt_regs * regs,
  					      long error_code)
- {
+@@ -469,6 +544,7 @@ fastcall void __kprobes do_general_prote
  	int cpu = get_cpu();
  	struct tss_struct *tss = &per_cpu(init_tss, cpu);
  	struct thread_struct *thread = &current->thread;
 +	int ok;
  
  	/*
-@@ -490,7 +566,6 @@ fastcall void do_general_protection(stru
+ 	 * Perform the lazy TSS's I/O bitmap copy. If the TSS has an
+@@ -495,7 +571,6 @@ fastcall void __kprobes do_general_prote
  		put_cpu();
  		return;
  	}
@@ -323,7 +366,7 @@
  
  	current->thread.error_code = error_code;
  	current->thread.trap_no = 13;
-@@ -501,17 +576,31 @@ fastcall void do_general_protection(stru
+@@ -506,17 +581,31 @@ fastcall void __kprobes do_general_prote
  	if (!user_mode(regs))
  		goto gp_in_kernel;
  
@@ -355,9 +398,29 @@
  	if (!fixup_exception(regs)) {
  		if (notify_die(DIE_GPF, "general protection fault", regs,
  				error_code, 13, SIGSEGV) == NOTIFY_STOP)
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/vsyscall.lds.S linux-810/arch/i386/kernel/vsyscall.lds.S
---- linux-804/arch/i386/kernel/vsyscall.lds.S
-+++ linux-810/arch/i386/kernel/vsyscall.lds.S
+Index: linux-exec-shield-curr.q/arch/i386/kernel/vsyscall-sysenter.S
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/vsyscall-sysenter.S
++++ linux-exec-shield-curr.q/arch/i386/kernel/vsyscall-sysenter.S
+@@ -24,11 +24,11 @@ __kernel_vsyscall:
+ 	/* 7: align return point with nop's to make disassembly easier */
+ 	.space 7,0x90
+ 
+-	/* 14: System call restart point is here! (SYSENTER_RETURN - 2) */
++	/* 14: System call restart point is here! (SYSENTER_RETURN_OFFSET-2) */
+ 	jmp .Lenter_kernel
+ 	/* 16: System call normal return point is here! */
+-	.globl SYSENTER_RETURN	/* Symbol used by entry.S.  */
+-SYSENTER_RETURN:
++	.globl SYSENTER_RETURN_OFFSET	/* Symbol used by sysenter.c  */
++SYSENTER_RETURN_OFFSET:
+ 	pop %ebp
+ .Lpop_ebp:
+ 	pop %edx
+Index: linux-exec-shield-curr.q/arch/i386/kernel/vsyscall.lds.S
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/kernel/vsyscall.lds.S
++++ linux-exec-shield-curr.q/arch/i386/kernel/vsyscall.lds.S
 @@ -7,7 +7,7 @@
  
  SECTIONS
@@ -376,28 +439,11 @@
  
    .text           : { *(.text) }		:text =0x90909090
    .note		  : { *(.note.*) }		:text :note
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/kernel/vsyscall-sysenter.S linux-810/arch/i386/kernel/vsyscall-sysenter.S
---- linux-804/arch/i386/kernel/vsyscall-sysenter.S
-+++ linux-810/arch/i386/kernel/vsyscall-sysenter.S
-@@ -24,11 +24,11 @@ __kernel_vsyscall:
- 	/* 7: align return point with nop's to make disassembly easier */
- 	.space 7,0x90
- 
--	/* 14: System call restart point is here! (SYSENTER_RETURN - 2) */
-+	/* 14: System call restart point is here! (SYSENTER_RETURN_OFFSET-2) */
- 	jmp .Lenter_kernel
- 	/* 16: System call normal return point is here! */
--	.globl SYSENTER_RETURN	/* Symbol used by entry.S.  */
--SYSENTER_RETURN:
-+	.globl SYSENTER_RETURN_OFFSET	/* Symbol used by sysenter.c  */
-+SYSENTER_RETURN_OFFSET:
- 	pop %ebp
- .Lpop_ebp:
- 	pop %edx
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/mm/init.c linux-810/arch/i386/mm/init.c
---- linux-804/arch/i386/mm/init.c
-+++ linux-810/arch/i386/mm/init.c
-@@ -401,7 +401,7 @@ u64 __supported_pte_mask = ~_PAGE_NX;
+Index: linux-exec-shield-curr.q/arch/i386/mm/init.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/mm/init.c
++++ linux-exec-shield-curr.q/arch/i386/mm/init.c
+@@ -432,7 +432,7 @@ u64 __supported_pte_mask __read_mostly =
   * Control non executable mappings.
   *
   * on      Enable
@@ -406,7 +452,7 @@
   */
  void __init noexec_setup(const char *str)
  {
-@@ -411,6 +411,7 @@ void __init noexec_setup(const char *str
+@@ -442,6 +442,7 @@ void __init noexec_setup(const char *str
  	} else if (!strncmp(str,"off",3)) {
  		disable_nx = 1;
  		__supported_pte_mask &= ~_PAGE_NX;
@@ -414,7 +460,7 @@
  	}
  }
  
-@@ -475,7 +476,10 @@ void __init paging_init(void)
+@@ -506,7 +507,10 @@ void __init paging_init(void)
  	set_nx();
  	if (nx_enabled)
  		printk("NX (Execute Disable) protection: active\n");
@@ -425,9 +471,10 @@
  
  	pagetable_init();
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/i386/mm/mmap.c linux-810/arch/i386/mm/mmap.c
---- linux-804/arch/i386/mm/mmap.c
-+++ linux-810/arch/i386/mm/mmap.c
+Index: linux-exec-shield-curr.q/arch/i386/mm/mmap.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/i386/mm/mmap.c
++++ linux-exec-shield-curr.q/arch/i386/mm/mmap.c
 @@ -62,15 +62,17 @@ void arch_pick_mmap_layout(struct mm_str
  	 * Fall back to the standard layout if the personality
  	 * bit is set, or if the expected stack growth is unlimited:
@@ -448,10 +495,11 @@
  		mm->unmap_area = arch_unmap_area_topdown;
  	}
  }
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/ia64/ia32/binfmt_elf32.c linux-810/arch/ia64/ia32/binfmt_elf32.c
---- linux-804/arch/ia64/ia32/binfmt_elf32.c
-+++ linux-810/arch/ia64/ia32/binfmt_elf32.c
-@@ -272,7 +272,7 @@ elf32_set_personality (void)
+Index: linux-exec-shield-curr.q/arch/ia64/ia32/binfmt_elf32.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/ia64/ia32/binfmt_elf32.c
++++ linux-exec-shield-curr.q/arch/ia64/ia32/binfmt_elf32.c
+@@ -264,7 +264,7 @@ elf32_set_personality (void)
  }
  
  static unsigned long
@@ -460,47 +508,91 @@
  {
  	unsigned long pgoff = (eppnt->p_vaddr) & ~IA32_PAGE_MASK;
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/ia32/ia32_binfmt.c linux-810/arch/x86_64/ia32/ia32_binfmt.c
---- linux-804/arch/x86_64/ia32/ia32_binfmt.c
-+++ linux-810/arch/x86_64/ia32/ia32_binfmt.c
-@@ -396,7 +396,7 @@ int setup_arg_pages(struct linux_binprm 
+Index: linux-exec-shield-curr.q/arch/x86_64/ia32/ia32_binfmt.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/x86_64/ia32/ia32_binfmt.c
++++ linux-exec-shield-curr.q/arch/x86_64/ia32/ia32_binfmt.c
+@@ -248,8 +248,6 @@ elf_core_copy_task_xfpregs(struct task_s
+ #define elf_check_arch(x) \
+ 	((x)->e_machine == EM_386)
+ 
+-extern int force_personality32;
+-
+ #define ELF_EXEC_PAGESIZE PAGE_SIZE
+ #define ELF_HWCAP (boot_cpu_data.x86_capability[0])
+ #define ELF_PLATFORM  ("i686")
+@@ -263,8 +261,6 @@ do {							\
+ 		set_thread_flag(TIF_ABI_PENDING);		\
+ 	else							\
+ 		clear_thread_flag(TIF_ABI_PENDING);		\
+-	/* XXX This overwrites the user set personality */	\
+-	current->personality |= force_personality32;		\
+ } while (0)
+ 
+ /* Override some function names */
+Index: linux-exec-shield-curr.q/arch/x86_64/kernel/process.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/x86_64/kernel/process.c
++++ linux-exec-shield-curr.q/arch/x86_64/kernel/process.c
+@@ -631,12 +631,6 @@ void set_personality_64bit(void)
+ 
+ 	/* Make sure to be in 64bit mode */
+ 	clear_thread_flag(TIF_IA32); 
+-
+-	/* TBD: overwrites user setup. Should have two bits.
+-	   But 64bit processes have always behaved this way,
+-	   so it's not too bad. The main problem is just that
+-   	   32bit childs are affected again. */
+-	current->personality &= ~READ_IMPLIES_EXEC;
  }
  
- static unsigned long
--elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type)
-+elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type, unsigned long unused)
+ asmlinkage long sys_fork(struct pt_regs *regs)
+Index: linux-exec-shield-curr.q/arch/x86_64/kernel/setup64.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/x86_64/kernel/setup64.c
++++ linux-exec-shield-curr.q/arch/x86_64/kernel/setup64.c
+@@ -45,7 +45,7 @@ Control non executable mappings for 64bi
+ on	Enable(default)
+ off	Disable
+ */ 
+-int __init nonx_setup(char *str)
++void __init nonx_setup(const char *str)
  {
- 	unsigned long map_addr;
- 	struct task_struct *me = current; 
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/kernel/process.c linux-810/arch/x86_64/kernel/process.c
---- linux-804/arch/x86_64/kernel/process.c
-+++ linux-810/arch/x86_64/kernel/process.c
-@@ -833,10 +833,3 @@ int dump_task_regs(struct task_struct *t
-  
- 	return 1;
- }
+ 	if (!strncmp(str, "on", 2)) {
+                 __supported_pte_mask |= _PAGE_NX; 
+@@ -54,28 +54,7 @@ int __init nonx_setup(char *str)
+ 		do_not_nx = 1;
+ 		__supported_pte_mask &= ~_PAGE_NX;
+         }
+-	return 0;
+-} 
+-__setup("noexec=", nonx_setup);	/* parsed early actually */
+-
+-int force_personality32 = READ_IMPLIES_EXEC;
+-
+-/* noexec32=on|off
+-Control non executable heap for 32bit processes.
+-To control the stack too use noexec=off
 -
--unsigned long arch_align_stack(unsigned long sp)
+-on	PROT_READ does not imply PROT_EXEC for 32bit processes
+-off	PROT_READ implies PROT_EXEC (default)
+-*/
+-static int __init nonx32_setup(char *str)
 -{
--	if (randomize_va_space)
--		sp -= get_random_int() % 8192;
--	return sp & ~0xf;
--}
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/fault.c linux-810/arch/x86_64/mm/fault.c
---- linux-804/arch/x86_64/mm/fault.c
-+++ linux-810/arch/x86_64/mm/fault.c
-@@ -73,7 +73,7 @@ static noinline int is_prefetch(struct p
- 	instr = (unsigned char *)convert_rip_to_linear(current, regs);
- 	max_instr = instr + 15;
- 
--	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE)
-+	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE64)
- 		return 0;
+-	if (!strcmp(str, "on"))
+-		force_personality32 &= ~READ_IMPLIES_EXEC;
+-	else if (!strcmp(str, "off"))
+-		force_personality32 |= READ_IMPLIES_EXEC;
+-	return 0;
+ }
+-__setup("noexec32=", nonx32_setup);
  
- 	while (scan_more && instr < max_instr) { 
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/Makefile linux-810/arch/x86_64/mm/Makefile
---- linux-804/arch/x86_64/mm/Makefile
-+++ linux-810/arch/x86_64/mm/Makefile
+ /*
+  * Great future plan:
+Index: linux-exec-shield-curr.q/arch/x86_64/mm/Makefile
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/x86_64/mm/Makefile
++++ linux-exec-shield-curr.q/arch/x86_64/mm/Makefile
 @@ -2,7 +2,7 @@
  # Makefile for the linux x86_64-specific parts of the memory manager.
  #
@@ -510,9 +602,23 @@
  obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
  obj-$(CONFIG_NUMA) += numa.o
  obj-$(CONFIG_K8_NUMA) += k8topology.o
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/arch/x86_64/mm/mmap.c linux-810/arch/x86_64/mm/mmap.c
---- linux-804/arch/x86_64/mm/mmap.c
-+++ linux-810/arch/x86_64/mm/mmap.c
+Index: linux-exec-shield-curr.q/arch/x86_64/mm/fault.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/arch/x86_64/mm/fault.c
++++ linux-exec-shield-curr.q/arch/x86_64/mm/fault.c
+@@ -74,7 +74,7 @@ static noinline int is_prefetch(struct p
+ 	instr = (unsigned char *)convert_rip_to_linear(current, regs);
+ 	max_instr = instr + 15;
+ 
+-	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE)
++	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE64)
+ 		return 0;
+ 
+ 	while (scan_more && instr < max_instr) { 
+Index: linux-exec-shield-curr.q/arch/x86_64/mm/mmap.c
+===================================================================
+--- /dev/null
++++ linux-exec-shield-curr.q/arch/x86_64/mm/mmap.c
 @@ -0,0 +1,95 @@
 +/*
 + *  linux/arch/x86-64/mm/mmap.c
@@ -571,13 +677,13 @@
 +	 */
 +	if (!test_thread_flag(TIF_IA32))
 +		return 1;
-+		
-+	if (current->personality & ADDR_COMPAT_LAYOUT) 
++
++	if (current->personality & ADDR_COMPAT_LAYOUT)
 +		return 1;
-+	
++
 +	if (current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY)
 +		return 1;
-+		
++
 +	return sysctl_legacy_va_layout;
 +}
 +
@@ -609,10 +715,11 @@
 +	return sp & ~0xf;
 +}
 +
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/drivers/char/random.c linux-810/drivers/char/random.c
---- linux-804/drivers/char/random.c
-+++ linux-810/drivers/char/random.c
-@@ -1634,13 +1634,18 @@ EXPORT_SYMBOL(secure_dccp_sequence_numbe
+Index: linux-exec-shield-curr.q/drivers/char/random.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/drivers/char/random.c
++++ linux-exec-shield-curr.q/drivers/char/random.c
+@@ -1632,13 +1632,18 @@ EXPORT_SYMBOL(secure_dccp_sequence_numbe
   */
  unsigned int get_random_int(void)
  {
@@ -632,9 +739,10 @@
  }
  
  /*
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/binfmt_elf.c linux-810/fs/binfmt_elf.c
---- linux-804/fs/binfmt_elf.c
-+++ linux-810/fs/binfmt_elf.c
+Index: linux-exec-shield-curr.q/fs/binfmt_elf.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/fs/binfmt_elf.c
++++ linux-exec-shield-curr.q/fs/binfmt_elf.c
 @@ -47,7 +47,7 @@
  
  static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs);
@@ -644,7 +752,7 @@
  extern int dump_fpu (struct pt_regs *, elf_fpregset_t *);
  
  #ifndef elf_addr_t
-@@ -285,20 +285,59 @@ create_elf_tables(struct linux_binprm *b
+@@ -285,26 +285,65 @@ create_elf_tables(struct linux_binprm *b
  #ifndef elf_map
  
  static unsigned long elf_map(struct file *filep, unsigned long addr,
@@ -653,16 +761,26 @@
 +			     unsigned long total_size)
  {
  	unsigned long map_addr;
+-	unsigned long pageoffset = ELF_PAGEOFFSET(eppnt->p_vaddr);
 +	unsigned long size = eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr);
 +	unsigned long off = eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr);
 +
 +	addr = ELF_PAGESTART(addr);
 +	size = ELF_PAGEALIGN(size);
  
- 	down_write(&current->mm->mmap_sem);
--	map_addr = do_mmap(filep, ELF_PAGESTART(addr),
--			   eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr), prot, type,
--			   eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr));
+-	down_write(&current->mm->mmap_sem);
+ 	/* mmap() will return -EINVAL if given a zero size, but a
+ 	 * segment with zero filesize is perfectly valid */
+-	if (eppnt->p_filesz + pageoffset)
+-		map_addr = do_mmap(filep, ELF_PAGESTART(addr),
+-				   eppnt->p_filesz + pageoffset, prot, type,
+-				   eppnt->p_offset - pageoffset);
+-	else
+-		map_addr = ELF_PAGESTART(addr);
++	if (!size)
++		return addr;
++
++	down_write(&current->mm->mmap_sem);
 +
 +	/*
 +	 * total_size is the size of the ELF (interpreter) image.
@@ -679,7 +797,7 @@
 +			do_munmap(current->mm, map_addr+size, total_size-size);
 +	} else
 +		map_addr = do_mmap(filep, addr, size, prot, type, off);
-+		
++
  	up_write(&current->mm->mmap_sem);
 -	return(map_addr);
 +
@@ -706,10 +824,11 @@
 +				ELF_PAGESTART(cmds[first_idx].p_vaddr);
 +}
 +
++
  /* This is much more generalized than the library routine read function,
     so we keep this separate.  Technically the library read function
     is only provided so that we can read a.out libraries that have
-@@ -306,7 +345,8 @@ static unsigned long elf_map(struct file
+@@ -312,7 +351,8 @@ static unsigned long elf_map(struct file
  
  static unsigned long load_elf_interp(struct elfhdr * interp_elf_ex,
  				     struct file * interpreter,
@@ -719,7 +838,7 @@
  {
  	struct elf_phdr *elf_phdata;
  	struct elf_phdr *eppnt;
-@@ -314,6 +354,7 @@ static unsigned long load_elf_interp(str
+@@ -320,6 +360,7 @@ static unsigned long load_elf_interp(str
  	int load_addr_set = 0;
  	unsigned long last_bss = 0, elf_bss = 0;
  	unsigned long error = ~0UL;
@@ -727,7 +846,7 @@
  	int retval, i, size;
  
  	/* First of all, some simple consistency checks */
-@@ -352,6 +393,10 @@ static unsigned long load_elf_interp(str
+@@ -358,6 +399,10 @@ static unsigned long load_elf_interp(str
  		goto out_close;
  	}
  
@@ -738,7 +857,7 @@
  	eppnt = elf_phdata;
  	for (i=0; i<interp_elf_ex->e_phnum; i++, eppnt++) {
  	  if (eppnt->p_type == PT_LOAD) {
-@@ -366,8 +411,11 @@ static unsigned long load_elf_interp(str
+@@ -372,8 +417,11 @@ static unsigned long load_elf_interp(str
  	    vaddr = eppnt->p_vaddr;
  	    if (interp_elf_ex->e_type == ET_EXEC || load_addr_set)
  	    	elf_type |= MAP_FIXED;
@@ -751,7 +870,7 @@
  	    error = map_addr;
  	    if (BAD_ADDR(map_addr))
  	    	goto out_close;
-@@ -527,7 +575,7 @@ static int load_elf_binary(struct linux_
+@@ -533,7 +581,7 @@ static int load_elf_binary(struct linux_
  	unsigned long reloc_func_desc = 0;
  	char passed_fileno[6];
  	struct files_struct *files;
@@ -760,7 +879,7 @@
  	unsigned long def_flags = 0;
  	struct {
  		struct elfhdr elf_ex;
-@@ -683,6 +731,8 @@ static int load_elf_binary(struct linux_
+@@ -689,6 +737,8 @@ static int load_elf_binary(struct linux_
  	}
  
  	elf_ppnt = elf_phdata;
@@ -769,7 +888,7 @@
  	for (i = 0; i < loc->elf_ex.e_phnum; i++, elf_ppnt++)
  		if (elf_ppnt->p_type == PT_GNU_STACK) {
  			if (elf_ppnt->p_flags & PF_X)
-@@ -693,6 +743,11 @@ static int load_elf_binary(struct linux_
+@@ -699,6 +749,11 @@ static int load_elf_binary(struct linux_
  		}
  	have_pt_gnu_stack = (i < loc->elf_ex.e_phnum);
  
@@ -781,7 +900,7 @@
  	/* Some simple consistency checks for the interpreter */
  	if (elf_interpreter) {
  		interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT;
-@@ -746,6 +801,15 @@ static int load_elf_binary(struct linux_
+@@ -752,6 +807,15 @@ static int load_elf_binary(struct linux_
  	if (retval)
  		goto out_free_dentry;
  
@@ -797,7 +916,7 @@
  	/* Discard our unneeded old files struct */
  	if (files) {
  		steal_locks(files);
-@@ -764,7 +828,8 @@ static int load_elf_binary(struct linux_
+@@ -770,7 +834,8 @@ static int load_elf_binary(struct linux_
  	/* Do this immediately, since STACK_TOP as used in setup_arg_pages
  	   may depend on the personality.  */
  	SET_PERSONALITY(loc->elf_ex, ibcs2_interpreter);
@@ -807,7 +926,7 @@
  		current->personality |= READ_IMPLIES_EXEC;
  
  	if ( !(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-@@ -785,10 +850,10 @@ static int load_elf_binary(struct linux_
+@@ -790,10 +855,10 @@ static int load_elf_binary(struct linux_
  	
  	current->mm->start_stack = bprm->p;
  
@@ -821,7 +940,7 @@
  
  	for(i = 0, elf_ppnt = elf_phdata; i < loc->elf_ex.e_phnum; i++, elf_ppnt++) {
  		int elf_prot = 0, elf_flags;
-@@ -832,16 +897,16 @@ static int load_elf_binary(struct linux_
+@@ -837,16 +902,16 @@ static int load_elf_binary(struct linux_
  		elf_flags = MAP_PRIVATE|MAP_DENYWRITE|MAP_EXECUTABLE;
  
  		vaddr = elf_ppnt->p_vaddr;
@@ -845,7 +964,7 @@
  		if (BAD_ADDR(error)) {
  			send_sig(SIGKILL, current, 0);
  			goto out_free_dentry;
-@@ -918,7 +983,8 @@ static int load_elf_binary(struct linux_
+@@ -923,7 +988,8 @@ static int load_elf_binary(struct linux_
  		else
  			elf_entry = load_elf_interp(&loc->interp_elf_ex,
  						    interpreter,
@@ -855,22 +974,30 @@
  		if (BAD_ADDR(elf_entry)) {
  			printk(KERN_ERR "Unable to load interpreter %.128s\n",
  				elf_interpreter);
-@@ -950,6 +1016,14 @@ static int load_elf_binary(struct linux_
+@@ -940,8 +1006,6 @@ static int load_elf_binary(struct linux_
+ 		elf_entry = loc->elf_ex.e_entry;
+ 	}
+ 
+-	kfree(elf_phdata);
+-
+ 	if (interpreter_type != INTERPRETER_AOUT)
+ 		sys_close(elf_exec_fileno);
+ 
+@@ -951,10 +1015,12 @@ static int load_elf_binary(struct linux_
+ 	retval = arch_setup_additional_pages(bprm, executable_stack);
+ 	if (retval < 0) {
+ 		send_sig(SIGKILL, current, 0);
+-		goto out;
++		goto out_free_fh;
  	}
  #endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */
  
-+	/*
-+	 * Map the vsyscall trampoline. This address is then passed via
-+	 * AT_SYSINFO.
-+	 */
-+#ifdef __HAVE_ARCH_VSYSCALL
-+	map_vsyscall();
-+#endif
++	kfree(elf_phdata);
 +
  	compute_creds(bprm);
  	current->flags &= ~PF_FORKNOEXEC;
  	create_elf_tables(bprm, &loc->elf_ex, (interpreter_type == INTERPRETER_AOUT),
-@@ -963,6 +1037,10 @@ static int load_elf_binary(struct linux_
+@@ -968,6 +1034,10 @@ static int load_elf_binary(struct linux_
  	current->mm->end_data = end_data;
  	current->mm->start_stack = bprm->p;
  
@@ -881,10 +1008,21 @@
  	if (current->personality & MMAP_PAGE_ZERO) {
  		/* Why this, you ask???  Well SVr4 maps page 0 as read-only,
  		   and some applications "depend" upon this behavior.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/array.c linux-810/fs/proc/array.c
---- linux-804/fs/proc/array.c
-+++ linux-810/fs/proc/array.c
-@@ -385,8 +385,12 @@ static int do_task_stat(struct task_stru
+@@ -1153,6 +1223,9 @@ static int maydump(struct vm_area_struct
+ 	if (vma->vm_flags & (VM_IO | VM_RESERVED))
+ 		return 0;
+ 
++	if (vma->vm_flags & VM_DONTEXPAND) /* Kludge for vDSO.  */
++		return 1;
++
+ 	/* Dump shared memory only if mapped from an anonymous file.  */
+ 	if (vma->vm_flags & VM_SHARED)
+ 		return vma->vm_file->f_dentry->d_inode->i_nlink == 0;
+Index: linux-exec-shield-curr.q/fs/proc/array.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/fs/proc/array.c
++++ linux-exec-shield-curr.q/fs/proc/array.c
+@@ -391,8 +391,12 @@ static int do_task_stat(struct task_stru
  	ppid = pid_alive(task) ? task->group_leader->real_parent->tgid : 0;
  	read_unlock(&tasklist_lock);
  
@@ -899,10 +1037,11 @@
  	if (!whole) {
  		min_flt = task->min_flt;
  		maj_flt = task->maj_flt;
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/base.c linux-810/fs/proc/base.c
---- linux-804/fs/proc/base.c
-+++ linux-810/fs/proc/base.c
-@@ -181,7 +181,7 @@ static struct pid_entry tgid_base_stuff[
+Index: linux-exec-shield-curr.q/fs/proc/base.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/fs/proc/base.c
++++ linux-exec-shield-curr.q/fs/proc/base.c
+@@ -188,7 +188,7 @@ static struct pid_entry tgid_base_stuff[
  	E(PROC_TGID_CMDLINE,   "cmdline", S_IFREG|S_IRUGO),
  	E(PROC_TGID_STAT,      "stat",    S_IFREG|S_IRUGO),
  	E(PROC_TGID_STATM,     "statm",   S_IFREG|S_IRUGO),
@@ -911,7 +1050,7 @@
  #ifdef CONFIG_NUMA
  	E(PROC_TGID_NUMA_MAPS, "numa_maps", S_IFREG|S_IRUGO),
  #endif
-@@ -221,7 +221,7 @@ static struct pid_entry tid_base_stuff[]
+@@ -230,7 +230,7 @@ static struct pid_entry tid_base_stuff[]
  	E(PROC_TID_CMDLINE,    "cmdline", S_IFREG|S_IRUGO),
  	E(PROC_TID_STAT,       "stat",    S_IFREG|S_IRUGO),
  	E(PROC_TID_STATM,      "statm",   S_IFREG|S_IRUGO),
@@ -920,9 +1059,10 @@
  #ifdef CONFIG_NUMA
  	E(PROC_TID_NUMA_MAPS,  "numa_maps",    S_IFREG|S_IRUGO),
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/fs/proc/task_mmu.c linux-810/fs/proc/task_mmu.c
---- linux-804/fs/proc/task_mmu.c
-+++ linux-810/fs/proc/task_mmu.c
+Index: linux-exec-shield-curr.q/fs/proc/task_mmu.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/fs/proc/task_mmu.c
++++ linux-exec-shield-curr.q/fs/proc/task_mmu.c
 @@ -43,7 +43,11 @@ char *task_mem(struct mm_struct *mm, cha
  		"VmStk:\t%8lu kB\n"
  		"VmExe:\t%8lu kB\n"
@@ -951,7 +1091,7 @@
  	return buffer;
  }
  
-@@ -123,7 +133,13 @@ static int show_map_internal(struct seq_
+@@ -140,7 +150,13 @@ static int show_map_internal(struct seq_
  			vma->vm_end,
  			flags & VM_READ ? 'r' : '-',
  			flags & VM_WRITE ? 'w' : '-',
@@ -966,7 +1106,7 @@
  			flags & VM_MAYSHARE ? 's' : 'p',
  			vma->vm_pgoff << PAGE_SHIFT,
  			MAJOR(dev), MINOR(dev), ino, &len);
-@@ -137,8 +153,7 @@ static int show_map_internal(struct seq_
+@@ -154,18 +170,22 @@ static int show_map_internal(struct seq_
  		seq_path(m, file->f_vfsmnt, file->f_dentry, "\n");
  	} else {
  		if (mm) {
@@ -975,11 +1115,29 @@
 +			if (vma->vm_end == mm->brk) {
  				pad_len_spaces(m, len);
  				seq_puts(m, "[heap]");
- 			} else {
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/desc.h linux-810/include/asm-i386/desc.h
---- linux-804/include/asm-i386/desc.h
-+++ linux-810/include/asm-i386/desc.h
-@@ -156,6 +156,20 @@ static inline unsigned long get_desc_bas
+-			} else {
+-				if (vma->vm_start <= mm->start_stack &&
++			} else if (vma->vm_start <= mm->start_stack &&
+ 					vma->vm_end >= mm->start_stack) {
+ 
+ 					pad_len_spaces(m, len);
+ 					seq_puts(m, "[stack]");
+ 				}
++#ifdef __i386__
++			else if (vma->vm_start ==
++				(unsigned long)mm->context.vdso) {
++				pad_len_spaces(m, len);
++				seq_puts(m, "[vdso]");
+ 			}
++#endif
+ 		} else {
+ 			pad_len_spaces(m, len);
+ 			seq_puts(m, "[vdso]");
+Index: linux-exec-shield-curr.q/include/asm-i386/desc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/desc.h
++++ linux-exec-shield-curr.q/include/asm-i386/desc.h
+@@ -160,6 +160,20 @@ static inline unsigned long get_desc_bas
  	return base;
  }
  
@@ -991,7 +1149,7 @@
 +}
 +
 +#define load_user_cs_desc(cpu, mm) \
-+    	per_cpu(cpu_gdt_table, (cpu))[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs
++    	get_cpu_gdt_table(cpu)[GDT_ENTRY_DEFAULT_USER_CS] = (mm)->context.user_cs
 +
 +extern void arch_add_exec_range(struct mm_struct *mm, unsigned long limit);
 +extern void arch_remove_exec_range(struct mm_struct *mm, unsigned long limit);
@@ -1000,18 +1158,19 @@
  #endif /* !__ASSEMBLY__ */
  
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/elf.h linux-810/include/asm-i386/elf.h
---- linux-804/include/asm-i386/elf.h
-+++ linux-810/include/asm-i386/elf.h
-@@ -9,6 +9,7 @@
- #include <asm/user.h>
+Index: linux-exec-shield-curr.q/include/asm-i386/elf.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/elf.h
++++ linux-exec-shield-curr.q/include/asm-i386/elf.h
+@@ -10,6 +10,7 @@
  #include <asm/processor.h>
  #include <asm/system.h>		/* for savesegment */
  #include <asm/auxvec.h>
 +#include <asm/desc.h>
  
  #include <linux/utsname.h>
-@@ -133,15 +134,22 @@ extern int dump_task_extended_fpu (struc
+ 
+@@ -129,17 +130,30 @@ extern int dump_task_extended_fpu (struc
  #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
  #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs) dump_task_extended_fpu(tsk, elf_xfpregs)
  
@@ -1040,8 +1199,16 @@
 +	}								\
  } while (0)
  
++#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
++struct linux_binprm;
++extern int arch_setup_additional_pages(struct linux_binprm *bprm,
++				       int executable_stack);
++
++#if 0	/* Disabled for exec-shield, where a normal vma holds the vDSO.  */
  /*
-@@ -152,15 +160,15 @@ do {								\
+  * These macros parameterize elf_core_dump in fs/binfmt_elf.c to write out
+  * extra segments containing the vsyscall DSO contents.  Dumping its
+@@ -148,15 +162,15 @@ do {								\
   * Dumping its extra ELF program headers includes all the other information
   * a debugger needs to easily find how the vsyscall DSO was being used.
   */
@@ -1061,7 +1228,7 @@
  		struct elf_phdr phdr = vsyscall_phdrs[i];		      \
  		if (phdr.p_type == PT_LOAD) {				      \
  			BUG_ON(ofs != 0);				      \
-@@ -178,10 +186,10 @@ do {									      \
+@@ -174,16 +188,23 @@ do {									      \
  #define ELF_CORE_WRITE_EXTRA_DATA					      \
  do {									      \
  	const struct elf_phdr *const vsyscall_phdrs =			      \
@@ -1075,7 +1242,9 @@
  		if (vsyscall_phdrs[i].p_type == PT_LOAD)		      \
  			DUMP_WRITE((void *) vsyscall_phdrs[i].p_vaddr,	      \
  				   PAGE_ALIGN(vsyscall_phdrs[i].p_memsz));    \
-@@ -190,4 +198,10 @@ do {									      \
+ 	}								      \
+ } while (0)
++#endif
  
  #endif
  
@@ -1086,9 +1255,10 @@
 +extern void map_vsyscall(void);
 +
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/mmu.h linux-810/include/asm-i386/mmu.h
---- linux-804/include/asm-i386/mmu.h
-+++ linux-810/include/asm-i386/mmu.h
+Index: linux-exec-shield-curr.q/include/asm-i386/mmu.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/mmu.h
++++ linux-exec-shield-curr.q/include/asm-i386/mmu.h
 @@ -7,11 +7,17 @@
   * we put the segment information here.
   *
@@ -1107,9 +1277,26 @@
  } mm_context_t;
  
  #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/pgalloc.h linux-810/include/asm-i386/pgalloc.h
---- linux-804/include/asm-i386/pgalloc.h
-+++ linux-810/include/asm-i386/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-i386/page.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/page.h
++++ linux-exec-shield-curr.q/include/asm-i386/page.h
+@@ -118,6 +118,11 @@ extern int page_is_ram(unsigned long pag
+ #endif
+ #define __KERNEL_START		(__PAGE_OFFSET + __PHYSICAL_START)
+ 
++/*
++ * Under exec-shield we don't use the generic fixmap gate area.
++ * The vDSO ("gate area") has a normal vma found the normal ways.
++ */
++#define __HAVE_ARCH_GATE_AREA	1
+ 
+ #define PAGE_OFFSET		((unsigned long)__PAGE_OFFSET)
+ #define VMALLOC_RESERVE		((unsigned long)__VMALLOC_RESERVE)
+Index: linux-exec-shield-curr.q/include/asm-i386/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-i386/pgalloc.h
 @@ -3,6 +3,7 @@
  
  #include <linux/config.h>
@@ -1118,10 +1305,11 @@
  #include <linux/threads.h>
  #include <linux/mm.h>		/* for struct page */
  
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/processor.h linux-810/include/asm-i386/processor.h
---- linux-804/include/asm-i386/processor.h
-+++ linux-810/include/asm-i386/processor.h
-@@ -317,7 +317,10 @@ extern int bootloader_type;
+Index: linux-exec-shield-curr.q/include/asm-i386/processor.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/processor.h
++++ linux-exec-shield-curr.q/include/asm-i386/processor.h
+@@ -319,7 +319,10 @@ extern int bootloader_type;
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
   */
@@ -1133,7 +1321,7 @@
  
  #define HAVE_ARCH_PICK_MMAP_LAYOUT
  
-@@ -499,6 +502,9 @@ static inline void load_esp0(struct tss_
+@@ -501,6 +504,9 @@ static inline void load_esp0(struct tss_
  	regs->xcs = __USER_CS;					\
  	regs->eip = new_eip;					\
  	regs->esp = new_esp;					\
@@ -1143,9 +1331,10 @@
  } while (0)
  
  /*
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-i386/thread_info.h linux-810/include/asm-i386/thread_info.h
---- linux-804/include/asm-i386/thread_info.h
-+++ linux-810/include/asm-i386/thread_info.h
+Index: linux-exec-shield-curr.q/include/asm-i386/thread_info.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-i386/thread_info.h
++++ linux-exec-shield-curr.q/include/asm-i386/thread_info.h
 @@ -38,6 +38,7 @@ struct thread_info {
  					 	   0-0xBFFFFFFF for user-thead
  						   0-0xFFFFFFFF for kernel-thread
@@ -1154,9 +1343,10 @@
  	struct restart_block    restart_block;
  
  	unsigned long           previous_esp;   /* ESP of the previous stack in case
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-ia64/pgalloc.h linux-810/include/asm-ia64/pgalloc.h
---- linux-804/include/asm-ia64/pgalloc.h
-+++ linux-810/include/asm-ia64/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-ia64/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-ia64/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-ia64/pgalloc.h
 @@ -1,6 +1,10 @@
  #ifndef _ASM_IA64_PGALLOC_H
  #define _ASM_IA64_PGALLOC_H
@@ -1168,9 +1358,26 @@
  /*
   * This file contains the functions and defines necessary to allocate
   * page tables.
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-ppc/pgalloc.h linux-810/include/asm-ppc/pgalloc.h
---- linux-804/include/asm-ppc/pgalloc.h
-+++ linux-810/include/asm-ppc/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-powerpc/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-powerpc/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-powerpc/pgalloc.h
+@@ -23,6 +23,11 @@ extern kmem_cache_t *pgtable_cache[];
+ #define PGD_CACHE_NUM	0
+ #endif
+ 
++/* Dummy functions since we don't support execshield on ppc */
++#define arch_add_exec_range(mm, limit) do { ; } while (0)
++#define arch_flush_exec_range(mm)      do { ; } while (0)
++#define arch_remove_exec_range(mm, limit) do { ; } while (0)
++
+ /*
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+Index: linux-exec-shield-curr.q/include/asm-ppc/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-ppc/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-ppc/pgalloc.h
 @@ -40,5 +40,10 @@ extern void pte_free(struct page *pte);
  
  #define check_pgt_cache()	do { } while (0)
@@ -1182,24 +1389,10 @@
 +
  #endif /* _PPC_PGALLOC_H */
  #endif /* __KERNEL__ */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-powerpc/pgalloc.h linux-810/include/asm-powerpc/pgalloc.h
---- linux-804/include/asm-powerpc/pgalloc.h
-+++ linux-810/include/asm-powerpc/pgalloc.h
-@@ -13,6 +13,11 @@ extern kmem_cache_t *pgtable_cache[];
- #define PUD_CACHE_NUM	1
- #define PGD_CACHE_NUM	0
- 
-+/* Dummy functions since we don't support execshield on ppc */
-+#define arch_add_exec_range(mm, limit) do { ; } while (0)
-+#define arch_flush_exec_range(mm)      do { ; } while (0)
-+#define arch_remove_exec_range(mm, limit) do { ; } while (0)
-+
- /*
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-s390/pgalloc.h linux-810/include/asm-s390/pgalloc.h
---- linux-804/include/asm-s390/pgalloc.h
-+++ linux-810/include/asm-s390/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-s390/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-s390/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-s390/pgalloc.h
 @@ -18,6 +18,10 @@
  #include <linux/gfp.h>
  #include <linux/mm.h>
@@ -1211,9 +1404,10 @@
  #define check_pgt_cache()	do {} while (0)
  
  extern void diag10(unsigned long addr);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-sparc/pgalloc.h linux-810/include/asm-sparc/pgalloc.h
---- linux-804/include/asm-sparc/pgalloc.h
-+++ linux-810/include/asm-sparc/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-sparc/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-sparc/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-sparc/pgalloc.h
 @@ -66,4 +66,8 @@ BTFIXUPDEF_CALL(void, pte_free, struct p
  #define pte_free(pte)		BTFIXUP_CALL(pte_free)(pte)
  #define __pte_free_tlb(tlb, pte)	pte_free(pte)
@@ -1223,10 +1417,11 @@
 +#define arch_remove_exec_range(mm, limit)	do { ; } while (0)
 +
  #endif /* _SPARC_PGALLOC_H */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-sparc64/pgalloc.h linux-810/include/asm-sparc64/pgalloc.h
---- linux-804/include/asm-sparc64/pgalloc.h
-+++ linux-810/include/asm-sparc64/pgalloc.h
-@@ -180,4 +180,8 @@ static inline void pte_free(struct page 
+Index: linux-exec-shield-curr.q/include/asm-sparc64/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-sparc64/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-sparc64/pgalloc.h
+@@ -181,4 +181,8 @@ static inline void pte_free(struct page 
  #define pgd_free(pgd)		free_pgd_fast(pgd)
  #define pgd_alloc(mm)		get_pgd_fast()
  
@@ -1235,9 +1430,10 @@
 +#define arch_remove_exec_range(mm, limit)	do { ; } while (0)
 +
  #endif /* _SPARC64_PGALLOC_H */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-x86_64/pgalloc.h linux-810/include/asm-x86_64/pgalloc.h
---- linux-804/include/asm-x86_64/pgalloc.h
-+++ linux-810/include/asm-x86_64/pgalloc.h
+Index: linux-exec-shield-curr.q/include/asm-x86_64/pgalloc.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-x86_64/pgalloc.h
++++ linux-exec-shield-curr.q/include/asm-x86_64/pgalloc.h
 @@ -6,6 +6,13 @@
  #include <linux/threads.h>
  #include <linux/mm.h>
@@ -1252,10 +1448,24 @@
  #define pmd_populate_kernel(mm, pmd, pte) \
  		set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)))
  #define pud_populate(mm, pud, pmd) \
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/asm-x86_64/processor.h linux-810/include/asm-x86_64/processor.h
---- linux-804/include/asm-x86_64/processor.h
-+++ linux-810/include/asm-x86_64/processor.h
-@@ -162,6 +162,11 @@ static inline void clear_in_cr4 (unsigne
+Index: linux-exec-shield-curr.q/include/asm-x86_64/pgtable.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-x86_64/pgtable.h
++++ linux-exec-shield-curr.q/include/asm-x86_64/pgtable.h
+@@ -21,7 +21,7 @@ extern unsigned long __supported_pte_mas
+ 
+ #define swapper_pg_dir init_level4_pgt
+ 
+-extern int nonx_setup(char *str);
++extern void nonx_setup(const char *str);
+ extern void paging_init(void);
+ extern void clear_kernel_mapping(unsigned long addr, unsigned long size);
+ 
+Index: linux-exec-shield-curr.q/include/asm-x86_64/processor.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/asm-x86_64/processor.h
++++ linux-exec-shield-curr.q/include/asm-x86_64/processor.h
+@@ -164,6 +164,11 @@ static inline void clear_in_cr4 (unsigne
   */
  #define TASK_SIZE64	(0x800000000000UL - 4096)
  
@@ -1267,10 +1477,11 @@
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
   */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/mm.h linux-810/include/linux/mm.h
---- linux-804/include/linux/mm.h
-+++ linux-810/include/linux/mm.h
-@@ -840,7 +840,14 @@ extern struct vm_area_struct *copy_vma(s
+Index: linux-exec-shield-curr.q/include/linux/mm.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/linux/mm.h
++++ linux-exec-shield-curr.q/include/linux/mm.h
+@@ -914,7 +914,19 @@ extern struct vm_area_struct *copy_vma(s
  extern void exit_mmap(struct mm_struct *);
  extern int may_expand_vm(struct mm_struct *mm, unsigned long npages);
  
@@ -1278,17 +1489,32 @@
 +extern unsigned long get_unmapped_area_prot(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, int);
 +
 +
-+static inline unsigned long get_unmapped_area(struct file * file, unsigned long addr, 
++static inline unsigned long get_unmapped_area(struct file * file, unsigned long addr,
 +		unsigned long len, unsigned long pgoff, unsigned long flags)
 +{
-+	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);	
++	return get_unmapped_area_prot(file, addr, len, pgoff, flags, 0);
 +}
++
++extern int install_special_mapping(struct mm_struct *mm,
++				   unsigned long addr, unsigned long len,
++				   unsigned long vm_flags, pgprot_t pgprot,
++				   struct page **pages);
  
  extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
  	unsigned long len, unsigned long prot,
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/resource.h linux-810/include/linux/resource.h
---- linux-804/include/linux/resource.h
-+++ linux-810/include/linux/resource.h
+@@ -966,7 +978,7 @@ unsigned long page_cache_readahead(struc
+ 			  struct file *filp,
+ 			  pgoff_t offset,
+ 			  unsigned long size);
+-void handle_ra_miss(struct address_space *mapping, 
++void handle_ra_miss(struct address_space *mapping,
+ 		    struct file_ra_state *ra, pgoff_t offset);
+ unsigned long max_sane_readahead(unsigned long nr);
+ 
+Index: linux-exec-shield-curr.q/include/linux/resource.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/linux/resource.h
++++ linux-exec-shield-curr.q/include/linux/resource.h
 @@ -52,8 +52,11 @@ struct rlimit {
  /*
   * Limit the stack by to some sane default: root can always
@@ -1302,11 +1528,12 @@
  
  /*
   * GPG wants 32kB of mlocked memory, to make sure pass phrases
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/sched.h linux-810/include/linux/sched.h
---- linux-804/include/linux/sched.h
-+++ linux-810/include/linux/sched.h
-@@ -36,6 +36,8 @@
- #include <linux/seccomp.h>
+Index: linux-exec-shield-curr.q/include/linux/sched.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/linux/sched.h
++++ linux-exec-shield-curr.q/include/linux/sched.h
+@@ -39,6 +39,8 @@
+ #include <linux/auxvec.h>	/* For AT_VECTOR_SIZE */
  
  struct exec_domain;
 +extern int exec_shield;
@@ -1314,7 +1541,7 @@
  
  /*
   * cloning flags:
-@@ -197,6 +199,10 @@ extern int sysctl_max_map_count;
+@@ -243,6 +245,10 @@ extern int sysctl_max_map_count;
  extern unsigned long
  arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
  		       unsigned long, unsigned long);
@@ -1325,7 +1552,7 @@
  extern unsigned long
  arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
  			  unsigned long len, unsigned long pgoff,
-@@ -218,6 +224,9 @@ struct mm_struct {
+@@ -295,6 +301,9 @@ struct mm_struct {
  	unsigned long (*get_unmapped_area) (struct file *filp,
  				unsigned long addr, unsigned long len,
  				unsigned long pgoff, unsigned long flags);
@@ -1335,9 +1562,10 @@
  	void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
          unsigned long mmap_base;		/* base of mmap area */
          unsigned long cached_hole_size;         /* if non-zero, the largest hole below free_area_cache */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/include/linux/sysctl.h linux-810/include/linux/sysctl.h
---- linux-804/include/linux/sysctl.h
-+++ linux-810/include/linux/sysctl.h
+Index: linux-exec-shield-curr.q/include/linux/sysctl.h
+===================================================================
+--- linux-exec-shield-curr.q.orig/include/linux/sysctl.h
++++ linux-exec-shield-curr.q/include/linux/sysctl.h
 @@ -92,6 +92,9 @@ enum
  
  	KERN_CAP_BSET=14,	/* int: capability bounding set */
@@ -1348,12 +1576,13 @@
  	KERN_REALROOTDEV=16,	/* real root device to mount after initrd */
  
  	KERN_SPARC_REBOOT=21,	/* reboot command on Sparc */
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/kernel/signal.c linux-810/kernel/signal.c
---- linux-804/kernel/signal.c
-+++ linux-810/kernel/signal.c
-@@ -1209,6 +1209,37 @@ kill_proc_info(int sig, struct siginfo *
- 	return error;
- }
+Index: linux-exec-shield-curr.q/kernel/signal.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/kernel/signal.c
++++ linux-exec-shield-curr.q/kernel/signal.c
+@@ -868,6 +868,37 @@ out_set:
+ #define LEGACY_QUEUE(sigptr, sig) \
+ 	(((sig) < SIGRTMIN) && sigismember(&(sigptr)->signal, (sig)))
  
 +int print_fatal_signals = 0;
 +
@@ -1361,7 +1590,7 @@
 +{
 +	printk("%s/%d: potentially unexpected fatal signal %d.\n",
 +		current->comm, current->pid, signr);
-+		
++
 +#ifdef __i386__
 +	printk("code at %08lx: ", regs->eip);
 +	{
@@ -1373,7 +1602,7 @@
 +			printk("%02x ", insn);
 +		}
 +	}
-+#endif	
++#endif
 +	printk("\n");
 +	show_regs(regs);
 +}
@@ -1387,9 +1616,9 @@
 +
 +__setup("print-fatal-signals=", setup_print_fatal_signals);
  
- /*
-  * kill_something_info() interprets pid in interesting ways just like kill(2).
-@@ -1859,6 +1890,11 @@ relock:
+ static int
+ specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
+@@ -1935,6 +1966,11 @@ relock:
  		if (!signr)
  			break; /* will return 0 */
  
@@ -1401,7 +1630,7 @@
  		if ((current->ptrace & PT_PTRACED) && signr != SIGKILL) {
  			ptrace_signal_deliver(regs, cookie);
  
-@@ -1954,6 +1990,8 @@ relock:
+@@ -2030,6 +2066,8 @@ relock:
  		 * Anything else is fatal, maybe with a core dump.
  		 */
  		current->flags |= PF_SIGNALED;
@@ -1410,14 +1639,15 @@
  		if (sig_kernel_coredump(signr)) {
  			/*
  			 * If it was able to dump core, this kills all
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/kernel/sysctl.c linux-810/kernel/sysctl.c
---- linux-804/kernel/sysctl.c
-+++ linux-810/kernel/sysctl.c
-@@ -74,6 +74,19 @@ extern int proc_unknown_nmi_panic(ctl_ta
+Index: linux-exec-shield-curr.q/kernel/sysctl.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/kernel/sysctl.c
++++ linux-exec-shield-curr.q/kernel/sysctl.c
+@@ -77,6 +77,19 @@ extern int proc_unknown_nmi_panic(ctl_ta
  				  void __user *, size_t *, loff_t *);
  #endif
  
-+extern unsigned int vdso_enabled;
++extern unsigned int vdso_enabled, vdso_populate;
 +
 +int exec_shield = 1;
 +
@@ -1433,7 +1663,7 @@
  /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
  static int maxolduid = 65535;
  static int minolduid;
-@@ -279,6 +292,32 @@ static ctl_table kern_table[] = {
+@@ -280,6 +293,40 @@ static ctl_table kern_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -1461,14 +1691,24 @@
 +		.mode		= 0644,
 +		.proc_handler	= &proc_dointvec,
 +	},
++	{
++		.ctl_name	= KERN_VDSO,
++		.procname	= "vdso_populate",
++		.data		= &vdso_populate,
++		.maxlen		= sizeof(int),
++		.mode		= 0644,
++		.proc_handler	= &proc_dointvec,
++	},
 +#endif
 +	{
  		.ctl_name	= KERN_CORE_USES_PID,
  		.procname	= "core_uses_pid",
  		.data		= &core_uses_pid,
---- linux-2.6.13/mm/fremap.c~	2005-10-13 17:34:08.000000000 -0400
-+++ linux-2.6.13/mm/fremap.c	2005-10-13 17:34:58.000000000 -0400
-@@ -83,13 +83,15 @@ int install_page(struct mm_struct *mm, s
+Index: linux-exec-shield-curr.q/mm/fremap.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/mm/fremap.c
++++ linux-exec-shield-curr.q/mm/fremap.c
+@@ -67,13 +67,15 @@ int install_page(struct mm_struct *mm, s
  	 * caller about it.
  	 */
  	err = -EINVAL;
@@ -1491,9 +1731,10 @@
  
  	if (pte_none(*pte) || !zap_pte(mm, vma, addr, pte))
  		inc_mm_counter(mm, file_rss);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mmap.c linux-810/mm/mmap.c
---- linux-804/mm/mmap.c
-+++ linux-810/mm/mmap.c
+Index: linux-exec-shield-curr.q/mm/mmap.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/mm/mmap.c
++++ linux-exec-shield-curr.q/mm/mmap.c
 @@ -24,6 +24,7 @@
  #include <linux/mount.h>
  #include <linux/mempolicy.h>
@@ -1502,7 +1743,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/cacheflush.h>
-@@ -342,6 +343,8 @@ static inline void
+@@ -341,6 +342,8 @@ static inline void
  __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
  		struct vm_area_struct *prev, struct rb_node *rb_parent)
  {
@@ -1511,7 +1752,7 @@
  	if (prev) {
  		vma->vm_next = prev->vm_next;
  		prev->vm_next = vma;
-@@ -446,6 +449,8 @@ __vma_unlink(struct mm_struct *mm, struc
+@@ -445,6 +448,8 @@ __vma_unlink(struct mm_struct *mm, struc
  	rb_erase(&vma->vm_rb, &mm->mm_rb);
  	if (mm->mmap_cache == vma)
  		mm->mmap_cache = prev;
@@ -1520,7 +1761,7 @@
  }
  
  /*
-@@ -751,6 +756,8 @@ struct vm_area_struct *vma_merge(struct 
+@@ -750,6 +755,8 @@ struct vm_area_struct *vma_merge(struct 
  		} else					/* cases 2, 5, 7 */
  			vma_adjust(prev, prev->vm_start,
  				end, prev->vm_pgoff, NULL);
@@ -1529,7 +1770,7 @@
  		return prev;
  	}
  
-@@ -922,7 +929,7 @@ unsigned long do_mmap_pgoff(struct file 
+@@ -921,7 +928,7 @@ unsigned long do_mmap_pgoff(struct file 
  	/* Obtain the address to map to. we verify (or select) it and ensure
  	 * that it represents a valid section of the address space.
  	 */
@@ -1538,7 +1779,7 @@
  	if (addr & ~PAGE_MASK)
  		return addr;
  
-@@ -1328,16 +1335,21 @@ void arch_unmap_area_topdown(struct mm_s
+@@ -1327,16 +1334,21 @@ void arch_unmap_area_topdown(struct mm_s
  		mm->free_area_cache = mm->mmap_base;
  }
  
@@ -1563,7 +1804,7 @@
  		if (file && file->f_op && file->f_op->get_unmapped_area)
  			get_area = file->f_op->get_unmapped_area;
  		addr = get_area(file, addr, len, pgoff, flags);
-@@ -1368,7 +1380,71 @@ get_unmapped_area(struct file *file, uns
+@@ -1367,7 +1379,71 @@ get_unmapped_area(struct file *file, uns
  	return addr;
  }
  
@@ -1636,7 +1877,7 @@
  
  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
  struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr)
-@@ -1443,6 +1519,14 @@ out:
+@@ -1442,6 +1518,14 @@ out:
  	return prev ? prev->vm_next : vma;
  }
  
@@ -1651,7 +1892,7 @@
  /*
   * Verify that the stack growth is acceptable and
   * update accounting. This is shared with both the
-@@ -1458,7 +1542,7 @@ static int acct_stack_growth(struct vm_a
+@@ -1457,7 +1541,7 @@ static int acct_stack_growth(struct vm_a
  		return -ENOMEM;
  
  	/* Stack limit test */
@@ -1660,7 +1901,7 @@
  		return -ENOMEM;
  
  	/* mlock limit tests */
-@@ -1740,10 +1824,14 @@ int split_vma(struct mm_struct * mm, str
+@@ -1737,10 +1821,14 @@ int split_vma(struct mm_struct * mm, str
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
  
@@ -1677,7 +1918,7 @@
  		vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
  	return 0;
-@@ -2048,6 +2048,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -1945,6 +2033,7 @@ void exit_mmap(struct mm_struct *mm)
  	vm_unacct_memory(nr_accounted);
  	free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0);
  	tlb_finish_mmu(tlb, 0, end);
@@ -1685,9 +1926,92 @@
  
  	/*
  	 * Walk the list again, actually closing and freeing it,
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mprotect.c linux-810/mm/mprotect.c
---- linux-804/mm/mprotect.c
-+++ linux-810/mm/mprotect.c
+@@ -2060,3 +2149,81 @@ int may_expand_vm(struct mm_struct *mm, 
+ 		return 0;
+ 	return 1;
+ }
++
++
++static struct page *
++special_mapping_nopage(struct vm_area_struct *vma,
++		       unsigned long address, int *type)
++{
++	struct page **pages;
++
++	BUG_ON(address < vma->vm_start || address >= vma->vm_end);
++
++	address -= vma->vm_start;
++	for (pages = vma->vm_private_data; address > 0 && *pages; ++pages)
++		address -= PAGE_SIZE;
++
++	if (*pages) {
++		get_page(*pages);
++		return *pages;
++	}
++
++	return NOPAGE_SIGBUS;
++}
++
++static struct vm_operations_struct special_mapping_vmops = {
++	.nopage	= special_mapping_nopage,
++};
++
++unsigned int vdso_populate = 1;
++
++/*
++ * Insert a new vma covering the given region, with the given flags and
++ * protections.  Its pages are supplied by the given null-terminated array.
++ * The region past the last page supplied will always produce SIGBUS.
++ * The array pointer and the pages it points to are assumed to stay alive
++ * for as long as this mapping might exist.
++ */
++int install_special_mapping(struct mm_struct *mm,
++			    unsigned long addr, unsigned long len,
++			    unsigned long vm_flags, pgprot_t pgprot,
++			    struct page **pages)
++{
++	struct vm_area_struct *vma;
++	int err;
++
++	vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
++	if (unlikely(vma == NULL))
++		return -ENOMEM;
++	memset(vma, 0, sizeof(*vma));
++
++	vma->vm_mm = mm;
++	vma->vm_start = addr;
++	vma->vm_end = addr + len;
++
++	vma->vm_flags = vm_flags;
++	vma->vm_page_prot = pgprot;
++
++	vma->vm_ops = &special_mapping_vmops;
++	vma->vm_private_data = pages;
++
++	insert_vm_struct(mm, vma);
++	mm->total_vm += len >> PAGE_SHIFT;
++
++	if (!vdso_populate)
++		return 0;
++
++	err = 0;
++	while (*pages) {
++		struct page *page = *pages++;
++		get_page(page);
++		err = install_page(mm, vma, addr, page, vma->vm_page_prot);
++		if (err) {
++			put_page(page);
++			break;
++		}
++		addr += PAGE_SIZE;
++	}
++
++	return err;
++}
+Index: linux-exec-shield-curr.q/mm/mprotect.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/mm/mprotect.c
++++ linux-exec-shield-curr.q/mm/mprotect.c
 @@ -22,6 +22,7 @@
  
  #include <asm/uaccess.h>
@@ -1696,7 +2020,7 @@
  #include <asm/cacheflush.h>
  #include <asm/tlbflush.h>
  
-@@ -106,7 +107,7 @@ mprotect_fixup(struct vm_area_struct *vm
+@@ -105,7 +106,7 @@ mprotect_fixup(struct vm_area_struct *vm
  	struct mm_struct *mm = vma->vm_mm;
  	unsigned long oldflags = vma->vm_flags;
  	long nrpages = (end - start) >> PAGE_SHIFT;
@@ -1705,141 +2029,34 @@
  	pgprot_t newprot;
  	pgoff_t pgoff;
  	int error;
-@@ -167,6 +168,8 @@ success:
+@@ -166,6 +167,8 @@ success:
  	 */
  	vma->vm_flags = newflags;
  	vma->vm_page_prot = newprot;
 +	if (oldflags & VM_EXEC)
 +		arch_remove_exec_range(current->mm, old_end);
  	change_protection(vma, start, end, newprot);
- 	__vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
- 	__vm_stat_account(mm, newflags, vma->vm_file, nrpages);
-diff -urNp --exclude-from=/home/davej/.exclude linux-804/mm/mremap.c linux-810/mm/mremap.c
---- linux-804/mm/mremap.c
-+++ linux-810/mm/mremap.c
-@@ -407,8 +407,8 @@ unsigned long do_mremap(unsigned long ad
+ 	vm_stat_account(mm, oldflags, vma->vm_file, -nrpages);
+ 	vm_stat_account(mm, newflags, vma->vm_file, nrpages);
+Index: linux-exec-shield-curr.q/mm/mremap.c
+===================================================================
+--- linux-exec-shield-curr.q.orig/mm/mremap.c
++++ linux-exec-shield-curr.q/mm/mremap.c
+@@ -386,8 +386,8 @@ unsigned long do_mremap(unsigned long ad
  			if (vma->vm_flags & VM_MAYSHARE)
  				map_flags |= MAP_SHARED;
  
 -			new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
 -						vma->vm_pgoff, map_flags);
-+			new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len, 
++			new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
 +				vma->vm_pgoff, map_flags, vma->vm_flags & VM_EXEC);
  			ret = new_addr;
  			if (new_addr & ~PAGE_MASK)
  				goto out;
-diff -urNp --exclude-from=/home/davej/.exclude linux-812/arch/i386/kernel/cpu/common.c linux-813/arch/i386/kernel/cpu/common.c
---- linux-812/arch/i386/kernel/cpu/common.c
-+++ linux-813/arch/i386/kernel/cpu/common.c
-@@ -397,6 +397,13 @@ void __devinit identify_cpu(struct cpuin
- 	if (disable_pse)
- 		clear_bit(X86_FEATURE_PSE, c->x86_capability);
- 
-+	if (exec_shield != 0) {
-+#ifdef CONFIG_HIGHMEM64G   /* NX implies PAE */
-+		if (!test_bit(X86_FEATURE_NX, c->x86_capability))
-+#endif
-+		clear_bit(X86_FEATURE_SEP, c->x86_capability);
-+	}
-+
- 	/* If the model name is still unset, do table lookup. */
- 	if ( !c->x86_model_id[0] ) {
- 		char *p;
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.13-a/arch/x86_64/ia32/ia32_binfmt.c
---- linux-2.6.13/arch/x86_64/ia32/ia32_binfmt.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/ia32/ia32_binfmt.c	2005-10-14 20:56:15.000000000 -0400
-@@ -249,8 +249,6 @@ elf_core_copy_task_xfpregs(struct task_s
- #define elf_check_arch(x) \
- 	((x)->e_machine == EM_386)
- 
--extern int force_personality32;
--
- #define ELF_EXEC_PAGESIZE PAGE_SIZE
- #define ELF_HWCAP (boot_cpu_data.x86_capability[0])
- #define ELF_PLATFORM  ("i686")
-@@ -264,8 +262,6 @@ do {							\
- 		set_thread_flag(TIF_ABI_PENDING);		\
- 	else							\
- 		clear_thread_flag(TIF_ABI_PENDING);		\
--	/* XXX This overwrites the user set personality */	\
--	current->personality |= force_personality32;		\
- } while (0)
- 
- /* Override some function names */
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/kernel/process.c linux-2.6.13-a/arch/x86_64/kernel/process.c
---- linux-2.6.13/arch/x86_64/kernel/process.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/kernel/process.c	2005-10-14 20:56:15.000000000 -0400
-@@ -638,12 +638,6 @@ void set_personality_64bit(void)
- 
- 	/* Make sure to be in 64bit mode */
- 	clear_thread_flag(TIF_IA32); 
--
--	/* TBD: overwrites user setup. Should have two bits.
--	   But 64bit processes have always behaved this way,
--	   so it's not too bad. The main problem is just that
--   	   32bit childs are affected again. */
--	current->personality &= ~READ_IMPLIES_EXEC;
- }
- 
- asmlinkage long sys_fork(struct pt_regs *regs)
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/arch/x86_64/kernel/setup64.c linux-2.6.13-a/arch/x86_64/kernel/setup64.c
---- linux-2.6.13/arch/x86_64/kernel/setup64.c	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/arch/x86_64/kernel/setup64.c	2005-10-14 20:56:15.000000000 -0400
-@@ -45,7 +45,7 @@ Control non executable mappings for 64bi
- on	Enable(default)
- off	Disable
- */ 
--int __init nonx_setup(char *str)
-+void __init nonx_setup(const char *str)
- {
- 	if (!strncmp(str, "on", 2)) {
-                 __supported_pte_mask |= _PAGE_NX; 
-@@ -53,29 +53,8 @@ int __init nonx_setup(char *str)
- 	} else if (!strncmp(str, "off", 3)) {
- 		do_not_nx = 1;
- 		__supported_pte_mask &= ~_PAGE_NX;
--        }
--	return 0;
-+        } 
- } 
--__setup("noexec=", nonx_setup);	/* parsed early actually */
--
--int force_personality32 = READ_IMPLIES_EXEC;
--
--/* noexec32=on|off
--Control non executable heap for 32bit processes.
--To control the stack too use noexec=off
--
--on	PROT_READ does not imply PROT_EXEC for 32bit processes
--off	PROT_READ implies PROT_EXEC (default)
--*/
--static int __init nonx32_setup(char *str)
--{
--	if (!strcmp(str, "on"))
--		force_personality32 &= ~READ_IMPLIES_EXEC;
--	else if (!strcmp(str, "off"))
--		force_personality32 |= READ_IMPLIES_EXEC;
--	return 0;
--}
--__setup("noexec32=", nonx32_setup);
- 
- /*
-  * Great future plan:
-diff -urpN --exclude-from=/home/devel/davej/.exclude linux-2.6.13/include/asm-x86_64/pgtable.h linux-2.6.13-a/include/asm-x86_64/pgtable.h
---- linux-2.6.13/include/asm-x86_64/pgtable.h	2005-10-14 20:55:36.000000000 -0400
-+++ linux-2.6.13-a/include/asm-x86_64/pgtable.h	2005-10-14 20:56:15.000000000 -0400
-@@ -20,7 +20,7 @@ extern unsigned long __supported_pte_mas
- 
- #define swapper_pg_dir init_level4_pgt
- 
--extern int nonx_setup(char *str);
-+extern void nonx_setup(const char *str);
- extern void paging_init(void);
- extern void clear_kernel_mapping(unsigned long addr, unsigned long size);
- 
---- linux-2.6.14/fs/proc/base.c~	2005-12-29 19:25:42.000000000 -0500
-+++ linux-2.6.14/fs/proc/base.c	2005-12-29 19:26:20.000000000 -0500
-@@ -200,7 +200,7 @@ static struct pid_entry tgid_base_stuff[
+
+--- linux-2.6.15/fs/proc/base.c~	2006-01-09 13:41:33.000000000 -0500
++++ linux-2.6.15/fs/proc/base.c	2006-01-09 13:41:42.000000000 -0500
+@@ -201,7 +201,7 @@ static struct pid_entry tgid_base_stuff[
  	E(PROC_TGID_EXE,       "exe",     S_IFLNK|S_IRWXUGO),
  	E(PROC_TGID_MOUNTS,    "mounts",  S_IFREG|S_IRUGO),
  #ifdef CONFIG_MMU

linux-2.6-gcc41.patch:
 apic.h |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6-gcc41.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-gcc41.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- linux-2.6-gcc41.patch	8 Jan 2006 01:59:03 -0000	1.6
+++ linux-2.6-gcc41.patch	9 Jan 2006 18:55:15 -0000	1.7
@@ -17,1276 +17,3 @@
  
  static __inline unsigned int apic_read(unsigned long reg)
 
-
-Since version 4.1 the gcc is warning about ignored attributes. This patch is
-using the equivalent attribute on the struct instead of on each of the
-structure or union members.
-
-GCC Manual:
-  "Specifying Attributes of Types
-
-   packed
-    This attribute, attached to struct or union type definition, specifies
-    that
-    each member of the structure or union is placed to minimize the memory
-    required. When attached to an enum definition, it indicates that the
-    smallest integral type should be used.
-
-    Specifying this attribute for struct and union types is equivalent to
-    specifying the packed attribute on each of the structure or union
-    members."
-
-Signed-off-by: Jan Blunck <jblunck at suse.de>
-
---8JPrznbw0YAQ/KXy
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: attachment; filename="eliminate-packed-warnings-2.diff"
-
- drivers/isdn/hisax/hisax.h          |   20 ++---
- drivers/isdn/hisax/hisax_fcpcipnp.h |   18 ++---
- drivers/net/3c527.h                 |   50 +++++++-------
- drivers/net/irda/vlsi_ir.h          |    4 -
- drivers/net/wan/sdla.c              |    6 -
- include/linux/atalk.h               |   18 ++---
- include/linux/cycx_x25.h            |   66 +++++++++---------
- include/linux/if_frad.h             |   12 +--
- include/linux/isdnif.h              |   70 ++++++++++----------
- include/linux/ncp.h                 |  126 ++++++++++++++++++------------------
- include/linux/sdla.h                |   64 +++++++++---------
- include/linux/wavefront.h           |   34 ++++-----
- include/net/dn_dev.h                |   80 +++++++++++-----------
- include/net/dn_nsp.h                |   74 ++++++++++-----------
- include/sound/wavefront.h           |   34 ++++-----
- 16 files changed, 340 insertions(+), 340 deletions(-)
-
-Index: linux-2.6/include/linux/if_frad.h
-===================================================================
---- linux-2.6.orig/include/linux/if_frad.h
-+++ linux-2.6/include/linux/if_frad.h
-@@ -131,17 +131,17 @@ struct frad_conf 
- /* these are the fields of an RFC 1490 header */
- struct frhdr
- {
--   unsigned char  control	__attribute__((packed));
-+   unsigned char  control;
- 
-    /* for IP packets, this can be the NLPID */
--   unsigned char  pad		__attribute__((packed)); 
-+   unsigned char  pad;
- 
--   unsigned char  NLPID		__attribute__((packed));
--   unsigned char  OUI[3]	__attribute__((packed));
--   unsigned short PID		__attribute__((packed));
-+   unsigned char  NLPID;
-+   unsigned char  OUI[3];
-+   unsigned short PID;
- 
- #define IP_NLPID pad 
--};
-+} __attribute__((packed));
- 
- /* see RFC 1490 for the definition of the following */
- #define FRAD_I_UI		0x03
-Index: linux-2.6/include/linux/isdnif.h
-===================================================================
---- linux-2.6.orig/include/linux/isdnif.h
-+++ linux-2.6/include/linux/isdnif.h
-@@ -282,43 +282,43 @@ typedef struct setup_parm {
- 
- typedef struct T30_s {
- 	/* session parameters */
--	__u8 resolution		__attribute__ ((packed));
--	__u8 rate		__attribute__ ((packed));
--	__u8 width		__attribute__ ((packed));
--	__u8 length		__attribute__ ((packed));
--	__u8 compression	__attribute__ ((packed));
--	__u8 ecm		__attribute__ ((packed));
--	__u8 binary		__attribute__ ((packed));
--	__u8 scantime		__attribute__ ((packed));
--	__u8 id[FAXIDLEN]	__attribute__ ((packed));
-+	__u8 resolution;
-+	__u8 rate		;
-+	__u8 width		;
-+	__u8 length		;
-+	__u8 compression	;
-+	__u8 ecm		;
-+	__u8 binary		;
-+	__u8 scantime		;
-+	__u8 id[FAXIDLEN]	;
- 	/* additional parameters */
--	__u8 phase		__attribute__ ((packed));
--	__u8 direction		__attribute__ ((packed));
--	__u8 code		__attribute__ ((packed));
--	__u8 badlin		__attribute__ ((packed));
--	__u8 badmul		__attribute__ ((packed));
--	__u8 bor		__attribute__ ((packed));
--	__u8 fet		__attribute__ ((packed));
--	__u8 pollid[FAXIDLEN]	__attribute__ ((packed));
--	__u8 cq			__attribute__ ((packed));
--	__u8 cr			__attribute__ ((packed));
--	__u8 ctcrty		__attribute__ ((packed));
--	__u8 minsp		__attribute__ ((packed));
--	__u8 phcto		__attribute__ ((packed));
--	__u8 rel		__attribute__ ((packed));
--	__u8 nbc		__attribute__ ((packed));
-+	__u8 phase;
-+	__u8 direction;
-+	__u8 code;
-+	__u8 badlin;
-+	__u8 badmul;
-+	__u8 bor;
-+	__u8 fet;
-+	__u8 pollid[FAXIDLEN];
-+	__u8 cq;
-+	__u8 cr;
-+	__u8 ctcrty;
-+	__u8 minsp;
-+	__u8 phcto;
-+	__u8 rel;
-+	__u8 nbc;
- 	/* remote station parameters */
--	__u8 r_resolution	__attribute__ ((packed));
--	__u8 r_rate		__attribute__ ((packed));
--	__u8 r_width		__attribute__ ((packed));
--	__u8 r_length		__attribute__ ((packed));
--	__u8 r_compression	__attribute__ ((packed));
--	__u8 r_ecm		__attribute__ ((packed));
--	__u8 r_binary		__attribute__ ((packed));
--	__u8 r_scantime		__attribute__ ((packed));
--	__u8 r_id[FAXIDLEN]	__attribute__ ((packed));
--	__u8 r_code		__attribute__ ((packed));
--} T30_s;
-+	__u8 r_resolution;
-+	__u8 r_rate;
-+	__u8 r_width;
-+	__u8 r_length;
-+	__u8 r_compression;
-+	__u8 r_ecm;
-+	__u8 r_binary;
-+	__u8 r_scantime;
-+	__u8 r_id[FAXIDLEN];
-+	__u8 r_code;
-+} __attribute__((packed)) T30_s;
- 
- #define ISDN_TTY_FAX_CONN_IN	0
- #define ISDN_TTY_FAX_CONN_OUT	1
-Index: linux-2.6/include/linux/ncp.h
-===================================================================
---- linux-2.6.orig/include/linux/ncp.h
-+++ linux-2.6/include/linux/ncp.h
-@@ -20,29 +20,29 @@
- #define NCP_DEALLOC_SLOT_REQUEST (0x5555)
- 
- struct ncp_request_header {
--	__u16 type __attribute__((packed));
--	__u8 sequence __attribute__((packed));
--	__u8 conn_low __attribute__((packed));
--	__u8 task __attribute__((packed));
--	__u8 conn_high __attribute__((packed));
--	__u8 function __attribute__((packed));
--	__u8 data[0] __attribute__((packed));
--};
-+	__u16 type;
-+	__u8 sequence;
-+	__u8 conn_low;
-+	__u8 task;
-+	__u8 conn_high;
-+	__u8 function;
-+	__u8 data[0];
-+} __attribute__((packed));
- 
- #define NCP_REPLY                (0x3333)
- #define NCP_WATCHDOG		 (0x3E3E)
- #define NCP_POSITIVE_ACK         (0x9999)
- 
- struct ncp_reply_header {
--	__u16 type __attribute__((packed));
--	__u8 sequence __attribute__((packed));
--	__u8 conn_low __attribute__((packed));
--	__u8 task __attribute__((packed));
--	__u8 conn_high __attribute__((packed));
--	__u8 completion_code __attribute__((packed));
--	__u8 connection_state __attribute__((packed));
--	__u8 data[0] __attribute__((packed));
--};
-+	__u16 type;
-+	__u8 sequence;
-+	__u8 conn_low;
-+	__u8 task;
-+	__u8 conn_high;
-+	__u8 completion_code;
-+	__u8 connection_state;
-+	__u8 data[0];
-+} __attribute__((packed));
- 
- #define NCP_VOLNAME_LEN (16)
- #define NCP_NUMBER_OF_VOLUMES (256)
-@@ -128,37 +128,37 @@ struct nw_nfs_info {
- };
- 
- struct nw_info_struct {
--	__u32 spaceAlloc __attribute__((packed));
--	__le32 attributes __attribute__((packed));
--	__u16 flags __attribute__((packed));
--	__le32 dataStreamSize __attribute__((packed));
--	__le32 totalStreamSize __attribute__((packed));
--	__u16 numberOfStreams __attribute__((packed));
--	__le16 creationTime __attribute__((packed));
--	__le16 creationDate __attribute__((packed));
--	__u32 creatorID __attribute__((packed));
--	__le16 modifyTime __attribute__((packed));
--	__le16 modifyDate __attribute__((packed));
--	__u32 modifierID __attribute__((packed));
--	__le16 lastAccessDate __attribute__((packed));
--	__u16 archiveTime __attribute__((packed));
--	__u16 archiveDate __attribute__((packed));
--	__u32 archiverID __attribute__((packed));
--	__u16 inheritedRightsMask __attribute__((packed));
--	__le32 dirEntNum __attribute__((packed));
--	__le32 DosDirNum __attribute__((packed));
--	__u32 volNumber __attribute__((packed));
--	__u32 EADataSize __attribute__((packed));
--	__u32 EAKeyCount __attribute__((packed));
--	__u32 EAKeySize __attribute__((packed));
--	__u32 NSCreator __attribute__((packed));
--	__u8 nameLen __attribute__((packed));
--	__u8 entryName[256] __attribute__((packed));
-+	__u32 spaceAlloc;
-+	__le32 attributes;
-+	__u16 flags;
-+	__le32 dataStreamSize;
-+	__le32 totalStreamSize;
-+	__u16 numberOfStreams;
-+	__le16 creationTime;
-+	__le16 creationDate;
-+	__u32 creatorID;
-+	__le16 modifyTime;
-+	__le16 modifyDate;
-+	__u32 modifierID;
-+	__le16 lastAccessDate;
-+	__u16 archiveTime;
-+	__u16 archiveDate;
-+	__u32 archiverID;
-+	__u16 inheritedRightsMask;
-+	__le32 dirEntNum;
-+	__le32 DosDirNum;
-+	__u32 volNumber;
-+	__u32 EADataSize;
-+	__u32 EAKeyCount;
-+	__u32 EAKeySize;
-+	__u32 NSCreator;
-+	__u8 nameLen;
-+	__u8 entryName[256];
- 	/* libncp may depend on there being nothing after entryName */
- #ifdef __KERNEL__
- 	struct nw_nfs_info nfs;
- #endif
--};
-+} __attribute__((packed));
- 
- /* modify mask - use with MODIFY_DOS_INFO structure */
- #define DM_ATTRIBUTES		  (cpu_to_le32(0x02))
-@@ -176,26 +176,26 @@ struct nw_info_struct {
- #define DM_MAXIMUM_SPACE	  (cpu_to_le32(0x2000))
- 
- struct nw_modify_dos_info {
--	__le32 attributes __attribute__((packed));
--	__le16 creationDate __attribute__((packed));
--	__le16 creationTime __attribute__((packed));
--	__u32 creatorID __attribute__((packed));
--	__le16 modifyDate __attribute__((packed));
--	__le16 modifyTime __attribute__((packed));
--	__u32 modifierID __attribute__((packed));
--	__u16 archiveDate __attribute__((packed));
--	__u16 archiveTime __attribute__((packed));
--	__u32 archiverID __attribute__((packed));
--	__le16 lastAccessDate __attribute__((packed));
--	__u16 inheritanceGrantMask __attribute__((packed));
--	__u16 inheritanceRevokeMask __attribute__((packed));
--	__u32 maximumSpace __attribute__((packed));
--};
-+	__le32 attributes;
-+	__le16 creationDate;
-+	__le16 creationTime;
-+	__u32 creatorID;
-+	__le16 modifyDate;
-+	__le16 modifyTime;
-+	__u32 modifierID;
-+	__u16 archiveDate;
-+	__u16 archiveTime;
-+	__u32 archiverID;
-+	__le16 lastAccessDate;
-+	__u16 inheritanceGrantMask;
-+	__u16 inheritanceRevokeMask;
-+	__u32 maximumSpace;
-+} __attribute__((packed));
- 
- struct nw_search_sequence {
--	__u8 volNumber __attribute__((packed));
--	__u32 dirBase __attribute__((packed));
--	__u32 sequence __attribute__((packed));
--};
-+	__u8 volNumber;
-+	__u32 dirBase;
-+	__u32 sequence;
-+} __attribute__((packed));
- 
- #endif				/* _LINUX_NCP_H */
-Index: linux-2.6/drivers/isdn/hisax/hisax.h
-===================================================================
---- linux-2.6.orig/drivers/isdn/hisax/hisax.h
-+++ linux-2.6/drivers/isdn/hisax/hisax.h
-@@ -396,17 +396,17 @@ struct isar_hw {
- 
- struct hdlc_stat_reg {
- #ifdef __BIG_ENDIAN
--	u_char fill __attribute__((packed));
--	u_char mode __attribute__((packed));
--	u_char xml  __attribute__((packed));
--	u_char cmd  __attribute__((packed));
--#else
--	u_char cmd  __attribute__((packed));
--	u_char xml  __attribute__((packed));
--	u_char mode __attribute__((packed));
--	u_char fill __attribute__((packed));
-+	u_char fill;
-+	u_char mode;
-+	u_char xml;
-+	u_char cmd;
-+#else
-+	u_char cmd;
-+	u_char xml;
-+	u_char mode;
-+	u_char fill;
- #endif
--};
-+} __attribute__((packed));
- 
- struct hdlc_hw {
- 	union {
-Index: linux-2.6/drivers/isdn/hisax/hisax_fcpcipnp.h
-===================================================================
---- linux-2.6.orig/drivers/isdn/hisax/hisax_fcpcipnp.h
-+++ linux-2.6/drivers/isdn/hisax/hisax_fcpcipnp.h
-@@ -12,17 +12,17 @@ enum {
- 
- struct hdlc_stat_reg {
- #ifdef __BIG_ENDIAN
--	u_char fill __attribute__((packed));
--	u_char mode __attribute__((packed));
--	u_char xml  __attribute__((packed));
--	u_char cmd  __attribute__((packed));
-+	u_char fill;
-+	u_char mode;
-+	u_char xml;
-+	u_char cmd;
- #else
--	u_char cmd  __attribute__((packed));
--	u_char xml  __attribute__((packed));
--	u_char mode __attribute__((packed));
--	u_char fill __attribute__((packed));
-+	u_char cmd;
-+	u_char xml;
-+	u_char mode;
-+	u_char fill;
- #endif
--};
-+} __attribute__((packed));
- 
- struct fritz_bcs {
- 	struct hisax_b_if b_if;
-Index: linux-2.6/drivers/net/3c527.h
-===================================================================
---- linux-2.6.orig/drivers/net/3c527.h
-+++ linux-2.6/drivers/net/3c527.h
-@@ -32,43 +32,43 @@
- 
- struct mc32_mailbox
- {
--	u16	mbox __attribute((packed));
--	u16	data[1] __attribute((packed));
--};
-+	u16	mbox;
-+	u16	data[1];
-+} __attribute((packed));
- 
- struct skb_header
- {
--	u8	status __attribute((packed));
--	u8	control __attribute((packed));
--	u16	next __attribute((packed));	/* Do not change! */
--	u16	length __attribute((packed));
--	u32	data __attribute((packed));
--};
-+	u8	status;
-+	u8	control;
-+	u16	next;	/* Do not change! */
-+	u16	length;
-+	u32	data;
-+} __attribute((packed));
- 
- struct mc32_stats
- {
- 	/* RX Errors */
--	u32     rx_crc_errors       __attribute((packed)); 	
--	u32     rx_alignment_errors  __attribute((packed)); 	
--	u32     rx_overrun_errors    __attribute((packed));
--	u32     rx_tooshort_errors  __attribute((packed));
--	u32     rx_toolong_errors   __attribute((packed));
--	u32     rx_outofresource_errors  __attribute((packed)); 
-+	u32     rx_crc_errors;
-+	u32     rx_alignment_errors;
-+	u32     rx_overrun_errors;
-+	u32     rx_tooshort_errors;
-+	u32     rx_toolong_errors;
-+	u32     rx_outofresource_errors;
- 
--	u32     rx_discarded   __attribute((packed));  /* via card pattern match filter */ 
-+	u32     rx_discarded;  /* via card pattern match filter */
- 
- 	/* TX Errors */
--	u32     tx_max_collisions __attribute((packed)); 
--	u32     tx_carrier_errors __attribute((packed)); 
--	u32     tx_underrun_errors __attribute((packed)); 
--	u32     tx_cts_errors     __attribute((packed)); 
--	u32     tx_timeout_errors __attribute((packed)) ;
-+	u32     tx_max_collisions;
-+	u32     tx_carrier_errors;
-+	u32     tx_underrun_errors;
-+	u32     tx_cts_errors;
-+	u32     tx_timeout_errors;
- 	
- 	/* various cruft */
--	u32     dataA[6] __attribute((packed));   
--        u16	dataB[5] __attribute((packed));   
--  	u32     dataC[14] __attribute((packed)); 	
--};
-+	u32     dataA[6];
-+        u16	dataB[5];
-+  	u32     dataC[14];
-+} __attribute((packed));
- 
- #define STATUS_MASK	0x0F
- #define COMPLETED	(1<<7)
-Index: linux-2.6/drivers/net/irda/vlsi_ir.h
-===================================================================
---- linux-2.6.orig/drivers/net/irda/vlsi_ir.h
-+++ linux-2.6/drivers/net/irda/vlsi_ir.h
-@@ -577,8 +577,8 @@ struct ring_descr_hw {
- 		struct {
- 			u8		addr_res[3];
- 			volatile u8	status;		/* descriptor status */
--		} rd_s __attribute__((packed));
--	} rd_u __attribute((packed));
-+		} __attribute__((packed)) rd_s;
-+	} __attribute((packed)) rd_u;
- } __attribute__ ((packed));
- 
- #define rd_addr		rd_u.addr
-Index: linux-2.6/include/linux/atalk.h
-===================================================================
---- linux-2.6.orig/include/linux/atalk.h
-+++ linux-2.6/include/linux/atalk.h
-@@ -155,15 +155,15 @@ struct elapaarp {
- #define AARP_REQUEST			1
- #define AARP_REPLY			2
- #define AARP_PROBE			3
--	__u8	hw_src[ETH_ALEN]	__attribute__ ((packed));
--	__u8	pa_src_zero		__attribute__ ((packed));
--	__be16	pa_src_net		__attribute__ ((packed));
--	__u8	pa_src_node		__attribute__ ((packed));
--	__u8	hw_dst[ETH_ALEN]	__attribute__ ((packed));
--	__u8	pa_dst_zero		__attribute__ ((packed));
--	__be16	pa_dst_net		__attribute__ ((packed));
--	__u8	pa_dst_node		__attribute__ ((packed));	
--};
-+	__u8	hw_src[ETH_ALEN];
-+	__u8	pa_src_zero;
-+	__be16	pa_src_net;
-+	__u8	pa_src_node;
-+	__u8	hw_dst[ETH_ALEN];
-+	__u8	pa_dst_zero;
-+	__be16	pa_dst_net;
-+	__u8	pa_dst_node;
-+} __attribute__ ((packed));
- 
- static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb)
- {
-Index: linux-2.6/include/linux/cycx_x25.h
-===================================================================
---- linux-2.6.orig/include/linux/cycx_x25.h
-+++ linux-2.6/include/linux/cycx_x25.h
-@@ -38,11 +38,11 @@ extern unsigned int cycx_debug;
- /* Data Structures */
- /* X.25 Command Block. */
- struct cycx_x25_cmd {
--	u16 command PACKED;
--	u16 link    PACKED; /* values: 0 or 1 */
--	u16 len     PACKED; /* values: 0 thru 0x205 (517) */
--	u32 buf     PACKED;
--};
-+	u16 command;
-+	u16 link;	/* values: 0 or 1 */
-+	u16 len;	/* values: 0 thru 0x205 (517) */
-+	u32 buf;
-+} PACKED;
- 
- /* Defines for the 'command' field. */
- #define X25_CONNECT_REQUEST             0x4401
-@@ -92,34 +92,34 @@ struct cycx_x25_cmd {
-  *	@flags - see dosx25.doc, in portuguese, for details
-  */
- struct cycx_x25_config {
--	u8  link	PACKED;
--	u8  speed	PACKED;
--	u8  clock	PACKED;
--	u8  n2		PACKED;
--	u8  n2win	PACKED;
--	u8  n3win	PACKED;
--	u8  nvc		PACKED;
--	u8  pktlen	PACKED;
--	u8  locaddr	PACKED;
--	u8  remaddr	PACKED;
--	u16 t1		PACKED;
--	u16 t2		PACKED;
--	u8  t21		PACKED;
--	u8  npvc	PACKED;
--	u8  t23		PACKED;
--	u8  flags	PACKED;
--};
-+	u8  link;
-+	u8  speed;
-+	u8  clock;
-+	u8  n2;
-+	u8  n2win;
-+	u8  n3win;
-+	u8  nvc;
-+	u8  pktlen;
-+	u8  locaddr;
-+	u8  remaddr;
-+	u16 t1;
-+	u16 t2;
-+	u8  t21;
-+	u8  npvc;
-+	u8  t23;
-+	u8  flags;
-+} PACKED;
- 
- struct cycx_x25_stats {
--	u16 rx_crc_errors	PACKED;
--	u16 rx_over_errors	PACKED;
--	u16 n2_tx_frames 	PACKED;
--	u16 n2_rx_frames 	PACKED;
--	u16 tx_timeouts 	PACKED;
--	u16 rx_timeouts 	PACKED;
--	u16 n3_tx_packets 	PACKED;
--	u16 n3_rx_packets 	PACKED;
--	u16 tx_aborts	 	PACKED;
--	u16 rx_aborts	 	PACKED;
--};
-+	u16 rx_crc_errors;
-+	u16 rx_over_errors;
-+	u16 n2_tx_frames;
-+	u16 n2_rx_frames;
-+	u16 tx_timeouts;
-+	u16 rx_timeouts;
-+	u16 n3_tx_packets;
-+	u16 n3_rx_packets;
-+	u16 tx_aborts;
-+	u16 rx_aborts;
-+} PACKED;
- #endif	/* _CYCX_X25_H */
-Index: linux-2.6/include/linux/sdla.h
-===================================================================
---- linux-2.6.orig/include/linux/sdla.h
-+++ linux-2.6/include/linux/sdla.h
-@@ -293,46 +293,46 @@ void sdla(void *cfg_info, char *dev, str
- #define SDLA_S508_INTEN			0x10
- 
- struct sdla_cmd {
--   char  opp_flag		__attribute__((packed));
--   char  cmd			__attribute__((packed));
--   short length			__attribute__((packed));
--   char  retval			__attribute__((packed));
--   short dlci			__attribute__((packed));
--   char  flags			__attribute__((packed));
--   short rxlost_int		__attribute__((packed));
--   long  rxlost_app		__attribute__((packed));
--   char  reserve[2]		__attribute__((packed));
--   char  data[SDLA_MAX_DATA]	__attribute__((packed));	/* transfer data buffer */
--};
-+   char  opp_flag;
-+   char  cmd;
-+   short length;
-+   char  retval;
-+   short dlci;
-+   char  flags;
-+   short rxlost_int;
-+   long  rxlost_app;
-+   char  reserve[2];
-+   char  data[SDLA_MAX_DATA];	/* transfer data buffer */
-+} __attribute__((packed));
- 
- struct intr_info {
--   char  flags		__attribute__((packed));
--   short txlen		__attribute__((packed));
--   char  irq		__attribute__((packed));
--   char  flags2		__attribute__((packed));
--   short timeout	__attribute__((packed));
--};
-+   char  flags;
-+   short txlen;
-+   char  irq;
-+   char  flags2;
-+   short timeout;
-+} __attribute__((packed));
- 
- /* found in the 508's control window at RXBUF_INFO */
- struct buf_info {
--   unsigned short rse_num	__attribute__((packed));
--   unsigned long  rse_base	__attribute__((packed));
--   unsigned long  rse_next	__attribute__((packed));
--   unsigned long  buf_base	__attribute__((packed));
--   unsigned short reserved	__attribute__((packed));
--   unsigned long  buf_top	__attribute__((packed));
--};
-+   unsigned short rse_num;
-+   unsigned long  rse_base;
-+   unsigned long  rse_next;
-+   unsigned long  buf_base;
-+   unsigned short reserved;
-+   unsigned long  buf_top;
-+} __attribute__((packed));
- 
- /* structure pointed to by rse_base in RXBUF_INFO struct */
- struct buf_entry {
--   char  opp_flag	__attribute__((packed));
--   short length		__attribute__((packed));
--   short dlci		__attribute__((packed));
--   char  flags		__attribute__((packed));
--   short timestamp	__attribute__((packed));
--   short reserved[2]	__attribute__((packed));
--   long  buf_addr	__attribute__((packed));
--};
-+   char  opp_flag;
-+   short length;
-+   short dlci;
-+   char  flags;
-+   short timestamp;
-+   short reserved[2];
-+   long  buf_addr;
-+} __attribute__((packed));
- 
- #endif
- 
-Index: linux-2.6/include/linux/wavefront.h
-===================================================================
---- linux-2.6.orig/include/linux/wavefront.h
-+++ linux-2.6/include/linux/wavefront.h
-@@ -434,22 +434,22 @@ typedef struct wf_multisample {
- } wavefront_multisample;
- 
- typedef struct wf_alias {
--    INT16 OriginalSample __attribute__ ((packed));
-+    INT16 OriginalSample;
- 
--    struct wf_sample_offset sampleStartOffset __attribute__ ((packed));
--    struct wf_sample_offset loopStartOffset __attribute__ ((packed));
--    struct wf_sample_offset sampleEndOffset __attribute__ ((packed));
--    struct wf_sample_offset loopEndOffset __attribute__ ((packed));
--
--    INT16  FrequencyBias __attribute__ ((packed));
--
--    UCHAR8 SampleResolution:2  __attribute__ ((packed));
--    UCHAR8 Unused1:1  __attribute__ ((packed));
--    UCHAR8 Loop:1 __attribute__ ((packed));
--    UCHAR8 Bidirectional:1  __attribute__ ((packed));
--    UCHAR8 Unused2:1 __attribute__ ((packed));
--    UCHAR8 Reverse:1 __attribute__ ((packed));
--    UCHAR8 Unused3:1 __attribute__ ((packed)); 
-+    struct wf_sample_offset sampleStartOffset;
-+    struct wf_sample_offset loopStartOffset;
-+    struct wf_sample_offset sampleEndOffset;
-+    struct wf_sample_offset loopEndOffset;
-+
-+    INT16  FrequencyBias;
-+
-+    UCHAR8 SampleResolution:2;
-+    UCHAR8 Unused1:1;
-+    UCHAR8 Loop:1;
-+    UCHAR8 Bidirectional:1;
-+    UCHAR8 Unused2:1;
-+    UCHAR8 Reverse:1;
-+    UCHAR8 Unused3:1;
-     
-     /* This structure is meant to be padded only to 16 bits on their
-        original. Of course, whoever wrote their documentation didn't
-@@ -460,8 +460,8 @@ typedef struct wf_alias {
-        standard 16->32 bit issues.
-     */
- 
--    UCHAR8 sixteen_bit_padding __attribute__ ((packed));
--} wavefront_alias;
-+    UCHAR8 sixteen_bit_padding;
-+} __attribute__((packed)) wavefront_alias;
- 
- typedef struct wf_drum {
-     UCHAR8 PatchNumber;
-Index: linux-2.6/include/net/dn_dev.h
-===================================================================
---- linux-2.6.orig/include/net/dn_dev.h
-+++ linux-2.6/include/net/dn_dev.h
-@@ -99,57 +99,57 @@ struct dn_dev {
- 
- struct dn_short_packet
- {
--	unsigned char   msgflg          __attribute__((packed));
--        unsigned short  dstnode         __attribute__((packed));
--        unsigned short  srcnode         __attribute__((packed));
--        unsigned char   forward         __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+        unsigned short  dstnode;
-+        unsigned short  srcnode;
-+        unsigned char   forward;
-+} __attribute__((packed));
- 
- struct dn_long_packet
- {
--	unsigned char   msgflg          __attribute__((packed));
--        unsigned char   d_area          __attribute__((packed));
--        unsigned char   d_subarea       __attribute__((packed));
--        unsigned char   d_id[6]         __attribute__((packed));
--        unsigned char   s_area          __attribute__((packed));
--        unsigned char   s_subarea       __attribute__((packed));
--        unsigned char   s_id[6]         __attribute__((packed));
--        unsigned char   nl2             __attribute__((packed));
--        unsigned char   visit_ct        __attribute__((packed));
--        unsigned char   s_class         __attribute__((packed));
--        unsigned char   pt              __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+        unsigned char   d_area;
-+        unsigned char   d_subarea;
-+        unsigned char   d_id[6];
-+        unsigned char   s_area;
-+        unsigned char   s_subarea;
-+        unsigned char   s_id[6];
-+        unsigned char   nl2;
-+        unsigned char   visit_ct;
-+        unsigned char   s_class;
-+        unsigned char   pt;
-+} __attribute__((packed));
- 
- /*------------------------- DRP - Routing messages ---------------------*/
- 
- struct endnode_hello_message
- {
--	unsigned char   msgflg          __attribute__((packed));
--        unsigned char   tiver[3]        __attribute__((packed));
--        unsigned char   id[6]           __attribute__((packed));
--        unsigned char   iinfo           __attribute__((packed));
--        unsigned short  blksize         __attribute__((packed));
--        unsigned char   area            __attribute__((packed));
--        unsigned char   seed[8]         __attribute__((packed));
--        unsigned char   neighbor[6]     __attribute__((packed));
--        unsigned short  timer           __attribute__((packed));
--        unsigned char   mpd             __attribute__((packed));
--        unsigned char   datalen         __attribute__((packed));
--        unsigned char   data[2]         __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+        unsigned char   tiver[3];
-+        unsigned char   id[6];
-+        unsigned char   iinfo;
-+        unsigned short  blksize;
-+        unsigned char   area;
-+        unsigned char   seed[8];
-+        unsigned char   neighbor[6];
-+        unsigned short  timer;
-+        unsigned char   mpd;
-+        unsigned char   datalen;
-+        unsigned char   data[2];
-+} __attribute__((packed));
- 
- struct rtnode_hello_message
- {
--	unsigned char   msgflg          __attribute__((packed));
--        unsigned char   tiver[3]        __attribute__((packed));
--        unsigned char   id[6]           __attribute__((packed));
--        unsigned char   iinfo           __attribute__((packed));
--        unsigned short  blksize         __attribute__((packed));
--        unsigned char   priority        __attribute__((packed));
--        unsigned char   area            __attribute__((packed));
--        unsigned short  timer           __attribute__((packed));
--        unsigned char   mpd             __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+        unsigned char   tiver[3];
-+        unsigned char   id[6];
-+        unsigned char   iinfo;
-+        unsigned short  blksize;
-+        unsigned char   priority;
-+        unsigned char   area;
-+        unsigned short  timer;
-+        unsigned char   mpd;
-+} __attribute__((packed));
- 
- 
- extern void dn_dev_init(void);
-Index: linux-2.6/drivers/net/wan/sdla.c
-===================================================================
---- linux-2.6.orig/drivers/net/wan/sdla.c
-+++ linux-2.6/drivers/net/wan/sdla.c
-@@ -329,9 +329,9 @@ static int sdla_cpuspeed(struct net_devi
- 
- struct _dlci_stat 
- {
--	short dlci		__attribute__((packed));
--	char  flags		__attribute__((packed));
--};
-+	short dlci;
-+	char  flags;
-+} __attribute__((packed));
- 
- struct _frad_stat 
- {
-Index: linux-2.6/include/net/dn_nsp.h
-===================================================================
---- linux-2.6.orig/include/net/dn_nsp.h
-+++ linux-2.6/include/net/dn_nsp.h
-@@ -72,78 +72,78 @@ extern struct sk_buff *dn_alloc_send_skb
- 
- struct nsp_data_seg_msg
- {
--	unsigned char   msgflg          __attribute__((packed));
--	unsigned short  dstaddr         __attribute__((packed));
--	unsigned short  srcaddr         __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+	unsigned short  dstaddr;
-+	unsigned short  srcaddr;
-+} __attribute__((packed));
- 
- struct nsp_data_opt_msg
- {
--	unsigned short  acknum          __attribute__((packed));
--	unsigned short  segnum          __attribute__((packed));
--	unsigned short  lsflgs          __attribute__((packed));
--};
-+	unsigned short  acknum;
-+	unsigned short  segnum;
-+	unsigned short  lsflgs;
-+} __attribute__((packed));
- 
- struct nsp_data_opt_msg1
- {
--	unsigned short  acknum          __attribute__((packed));
--	unsigned short  segnum          __attribute__((packed));
--};
-+	unsigned short  acknum;
-+	unsigned short  segnum;
-+} __attribute__((packed));
- 
- 
- /* Acknowledgment Message (data/other data)                             */
- struct nsp_data_ack_msg
- {
--	unsigned char   msgflg          __attribute__((packed));
--	unsigned short  dstaddr         __attribute__((packed));
--	unsigned short  srcaddr         __attribute__((packed));
--	unsigned short  acknum          __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+	unsigned short  dstaddr;
-+	unsigned short  srcaddr;
-+	unsigned short  acknum;
-+} __attribute__((packed));
- 
- /* Connect Acknowledgment Message */
- struct  nsp_conn_ack_msg
- {
--	unsigned char   msgflg          __attribute__((packed));
--	unsigned short  dstaddr         __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+	unsigned short  dstaddr;
-+} __attribute__((packed));
- 
- 
- /* Connect Initiate/Retransmit Initiate/Connect Confirm */
- struct  nsp_conn_init_msg
- {
--	unsigned char   msgflg          __attribute__((packed));
-+	unsigned char   msgflg;
- #define NSP_CI      0x18            /* Connect Initiate     */
- #define NSP_RCI     0x68            /* Retrans. Conn Init   */
--	unsigned short  dstaddr         __attribute__((packed));
--        unsigned short  srcaddr         __attribute__((packed));
--        unsigned char   services        __attribute__((packed));
-+	unsigned short  dstaddr;
-+        unsigned short  srcaddr;
-+        unsigned char   services;
- #define NSP_FC_NONE   0x00            /* Flow Control None    */
- #define NSP_FC_SRC    0x04            /* Seg Req. Count       */
- #define NSP_FC_SCMC   0x08            /* Sess. Control Mess   */
- #define NSP_FC_MASK   0x0c            /* FC type mask         */
--	unsigned char   info            __attribute__((packed));
--        unsigned short  segsize         __attribute__((packed));
--};
-+	unsigned char   info;
-+        unsigned short  segsize;
-+} __attribute__((packed));
- 
- /* Disconnect Initiate/Disconnect Confirm */
- struct  nsp_disconn_init_msg
- {
--	unsigned char   msgflg          __attribute__((packed));
--        unsigned short  dstaddr         __attribute__((packed));
--        unsigned short  srcaddr         __attribute__((packed));
--        unsigned short  reason          __attribute__((packed));
--};
-+	unsigned char   msgflg;
-+        unsigned short  dstaddr;
-+        unsigned short  srcaddr;
-+        unsigned short  reason;
-+} __attribute__((packed));
- 
- 
- 
- struct  srcobj_fmt
- {
--	char            format          __attribute__((packed));
--        unsigned char   task            __attribute__((packed));
--        unsigned short  grpcode         __attribute__((packed));
--        unsigned short  usrcode         __attribute__((packed));
--        char            dlen            __attribute__((packed));
--};
-+	char            format;
-+        unsigned char   task;
-+        unsigned short  grpcode;
-+        unsigned short  usrcode;
-+        char            dlen;
-+} __attribute__((packed));
- 
- /*
-  * A collection of functions for manipulating the sequence
-Index: linux-2.6/include/sound/wavefront.h
-===================================================================
---- linux-2.6.orig/include/sound/wavefront.h
-+++ linux-2.6/include/sound/wavefront.h
-@@ -454,22 +454,22 @@ typedef struct wf_multisample {
- } wavefront_multisample;
- 
- typedef struct wf_alias {
--    s16 OriginalSample __attribute__ ((packed));
-+    s16 OriginalSample;
- 
--    struct wf_sample_offset sampleStartOffset __attribute__ ((packed));
--    struct wf_sample_offset loopStartOffset __attribute__ ((packed));
--    struct wf_sample_offset sampleEndOffset __attribute__ ((packed));
--    struct wf_sample_offset loopEndOffset __attribute__ ((packed));
--
--    s16  FrequencyBias __attribute__ ((packed));
--
--    u8 SampleResolution:2  __attribute__ ((packed));
--    u8 Unused1:1  __attribute__ ((packed));
--    u8 Loop:1 __attribute__ ((packed));
--    u8 Bidirectional:1  __attribute__ ((packed));
--    u8 Unused2:1 __attribute__ ((packed));
--    u8 Reverse:1 __attribute__ ((packed));
--    u8 Unused3:1 __attribute__ ((packed)); 
-+    struct wf_sample_offset sampleStartOffset;
-+    struct wf_sample_offset loopStartOffset;
-+    struct wf_sample_offset sampleEndOffset;
-+    struct wf_sample_offset loopEndOffset;
-+
-+    s16  FrequencyBias;
-+
-+    u8 SampleResolution:2;
-+    u8 Unused1:1;
-+    u8 Loop:1;
-+    u8 Bidirectional:1;
-+    u8 Unused2:1;
-+    u8 Reverse:1;
-+    u8 Unused3:1;
-     
-     /* This structure is meant to be padded only to 16 bits on their
-        original. Of course, whoever wrote their documentation didn't
-@@ -480,8 +480,8 @@ typedef struct wf_alias {
-        standard 16->32 bit issues.
-     */
- 
--    u8 sixteen_bit_padding __attribute__ ((packed));
--} wavefront_alias;
-+    u8 sixteen_bit_padding;
-+} __attribute__((packed)) wavefront_alias;
- 
- typedef struct wf_drum {
-     u8 PatchNumber;
-
-
-Remove the unnecessary __attribute__ ((packed)) since the enum itself is
-packed and not the location of it in the structure.
-
-Signed-off-by: Jan Blunck <jblunck at suse.de>
-
- fs/afs/volume.h |    4 +---
- 1 files changed, 1 insertion(+), 3 deletions(-)
-
-Index: linux-2.6/fs/afs/volume.h
-===================================================================
---- linux-2.6.orig/fs/afs/volume.h
-+++ linux-2.6/fs/afs/volume.h
-@@ -18,8 +18,6 @@
- #include "kafsasyncd.h"
- #include "cache.h"
- 
--#define __packed __attribute__((packed))
--
- typedef enum {
- 	AFS_VLUPD_SLEEP,		/* sleeping waiting for update timer to fire */
- 	AFS_VLUPD_PENDING,		/* on pending queue */
-@@ -115,7 +113,7 @@ struct afs_volume
- 	struct cachefs_cookie	*cache;		/* caching cookie */
- #endif
- 	afs_volid_t		vid;		/* volume ID */
--	afs_voltype_t __packed	type;		/* type of volume */
-+	afs_voltype_t		type;		/* type of volume */
- 	char			type_force;	/* force volume type (suppress R/O -> R/W) */
- 	unsigned short		nservers;	/* number of server slots filled */
- 	unsigned short		rjservers;	/* number of servers discarded due to -ENOMEDIUM */
-
-
-The CAPI message structs itself should be packed and not the location of
-single fields in the structure.
-
-Signed-off-by: Jan Blunck <jblunck at suse.de>
-
- drivers/isdn/act2000/capi.h |   88 ++++++++++++++++++++++----------------------
- 1 files changed, 44 insertions(+), 44 deletions(-)
-
-Index: linux-2.6/drivers/isdn/act2000/capi.h
-===================================================================
---- linux-2.6.orig/drivers/isdn/act2000/capi.h
-+++ linux-2.6/drivers/isdn/act2000/capi.h
-@@ -78,29 +78,29 @@ typedef union  actcapi_infoel {         
- typedef struct actcapi_msn {
- 	__u8 eaz;
- 	__u8 len;                            /* Length of MSN                */
--	__u8 msn[15] __attribute__ ((packed));
--} actcapi_msn;
-+	__u8 msn[15];
-+}  __attribute__((packed)) actcapi_msn;
- 
- typedef struct actcapi_dlpd {
- 	__u8 len;                            /* Length of structure          */
--	__u16 dlen __attribute__ ((packed)); /* Data Length                  */
--	__u8 laa __attribute__ ((packed));   /* Link Address A               */
-+	__u16 dlen;                          /* Data Length                  */
-+	__u8 laa;                            /* Link Address A               */
- 	__u8 lab;                            /* Link Address B               */
- 	__u8 modulo;                         /* Modulo Mode                  */
- 	__u8 win;                            /* Window size                  */
- 	__u8 xid[100];                       /* XID Information              */
--} actcapi_dlpd;
-+} __attribute__((packed)) actcapi_dlpd;
- 
- typedef struct actcapi_ncpd {
- 	__u8   len;                          /* Length of structure          */
--	__u16  lic __attribute__ ((packed));
--	__u16  hic __attribute__ ((packed));
--	__u16  ltc __attribute__ ((packed));
--	__u16  htc __attribute__ ((packed));
--	__u16  loc __attribute__ ((packed));
--	__u16  hoc __attribute__ ((packed));
--	__u8   modulo __attribute__ ((packed));
--} actcapi_ncpd;
-+	__u16  lic;
-+	__u16  hic;
-+	__u16  ltc;
-+	__u16  htc;
-+	__u16  loc;
-+	__u16  hoc;
-+	__u8   modulo;
-+} __attribute__((packed)) actcapi_ncpd;
- #define actcapi_ncpi actcapi_ncpd
- 
- /*
-@@ -168,19 +168,19 @@ typedef struct actcapi_msg {
- 			__u16 manuf_msg;
- 			__u16 controller;
- 			actcapi_msn msnmap;
--		} manufacturer_req_msn;
-+		} __attribute ((packed)) manufacturer_req_msn;
- 		/* TODO: TraceInit-req/conf/ind/resp and
- 		 *       TraceDump-req/conf/ind/resp
- 		 */
- 		struct connect_req {
- 			__u8  controller;
- 			__u8  bchan;
--			__u32 infomask __attribute__ ((packed));
-+			__u32 infomask;
- 			__u8  si1;
- 			__u8  si2;
- 			__u8  eaz;
- 			actcapi_addr addr;
--		} connect_req;
-+		} __attribute__ ((packed)) connect_req;
- 		struct connect_conf {
- 			__u16 plci;
- 			__u16 info;
-@@ -192,7 +192,7 @@ typedef struct actcapi_msg {
- 			__u8  si2;
- 			__u8  eaz;
- 			actcapi_addr addr;
--		} connect_ind;
-+		} __attribute__ ((packed)) connect_ind;
- 		struct connect_resp {
- 			__u16 plci;
- 			__u8  rejectcause;
-@@ -200,14 +200,14 @@ typedef struct actcapi_msg {
- 		struct connect_active_ind {
- 			__u16 plci;
- 			actcapi_addr addr;
--		} connect_active_ind;
-+		} __attribute__ ((packed)) connect_active_ind;
- 		struct connect_active_resp {
- 			__u16 plci;
- 		} connect_active_resp;
- 		struct connect_b3_req {
- 			__u16 plci;
- 			actcapi_ncpi ncpi;
--		} connect_b3_req;
-+		} __attribute__ ((packed)) connect_b3_req;
- 		struct connect_b3_conf {
- 			__u16 plci;
- 			__u16 ncci;
-@@ -217,12 +217,12 @@ typedef struct actcapi_msg {
- 			__u16 ncci;
- 			__u16 plci;
- 			actcapi_ncpi ncpi;
--		} connect_b3_ind;
-+		} __attribute__ ((packed)) connect_b3_ind;
- 		struct connect_b3_resp {
- 			__u16 ncci;
- 			__u8  rejectcause;
--			actcapi_ncpi ncpi __attribute__ ((packed));
--		} connect_b3_resp;
-+			actcapi_ncpi ncpi;
-+		} __attribute__ ((packed)) connect_b3_resp;
- 		struct disconnect_req {
- 			__u16 plci;
- 			__u8  cause;
-@@ -241,14 +241,14 @@ typedef struct actcapi_msg {
- 		struct connect_b3_active_ind {
- 			__u16 ncci;
- 			actcapi_ncpi ncpi;
--		} connect_b3_active_ind;
-+		} __attribute__ ((packed)) connect_b3_active_ind;
- 		struct connect_b3_active_resp {
- 			__u16 ncci;
- 		} connect_b3_active_resp;
- 		struct disconnect_b3_req {
- 			__u16 ncci;
- 			actcapi_ncpi ncpi;
--		} disconnect_b3_req;
-+		} __attribute__ ((packed)) disconnect_b3_req;
- 		struct disconnect_b3_conf {
- 			__u16 ncci;
- 			__u16 info;
-@@ -257,7 +257,7 @@ typedef struct actcapi_msg {
- 			__u16 ncci;
- 			__u16 info;
- 			actcapi_ncpi ncpi;
--		} disconnect_b3_ind;
-+		} __attribute__ ((packed)) disconnect_b3_ind;
- 		struct disconnect_b3_resp {
- 			__u16 ncci;
- 		} disconnect_b3_resp;
-@@ -265,7 +265,7 @@ typedef struct actcapi_msg {
- 			__u16 plci;
- 			actcapi_infonr nr;
- 			actcapi_infoel el;
--		} info_ind;
-+		} __attribute__ ((packed)) info_ind;
- 		struct info_resp {
- 			__u16 plci;
- 		} info_resp;
-@@ -279,8 +279,8 @@ typedef struct actcapi_msg {
- 		struct select_b2_protocol_req {
- 			__u16 plci;
- 			__u8  protocol;
--			actcapi_dlpd dlpd __attribute__ ((packed));
--		} select_b2_protocol_req;
-+			actcapi_dlpd dlpd;
-+		} __attribute__ ((packed)) select_b2_protocol_req;
- 		struct select_b2_protocol_conf {
- 			__u16 plci;
- 			__u16 info;
-@@ -288,47 +288,47 @@ typedef struct actcapi_msg {
- 		struct select_b3_protocol_req {
- 			__u16 plci;
- 			__u8  protocol;
--			actcapi_ncpd ncpd __attribute__ ((packed));
--		} select_b3_protocol_req;
-+			actcapi_ncpd ncpd;
-+		} __attribute__ ((packed)) select_b3_protocol_req;
- 		struct select_b3_protocol_conf {
- 			__u16 plci;
- 			__u16 info;
- 		} select_b3_protocol_conf;
- 		struct listen_req {
- 			__u8  controller;
--			__u32 infomask __attribute__ ((packed));  
--			__u16 eazmask __attribute__ ((packed));
--			__u16 simask __attribute__ ((packed));
--		} listen_req;
-+			__u32 infomask;
-+			__u16 eazmask;
-+			__u16 simask;
-+		} __attribute__ ((packed)) listen_req;
- 		struct listen_conf {
- 			__u8  controller;
--			__u16 info __attribute__ ((packed));
--		} listen_conf;
-+			__u16 info;
-+		} __attribute__ ((packed)) listen_conf;
- 		struct data_b3_req {
- 			__u16 fakencci;
- 			__u16 datalen;
- 			__u32 unused;
- 			__u8  blocknr;
--			__u16 flags __attribute__ ((packed));
--		} data_b3_req;
-+			__u16 flags;
-+		} __attribute ((packed)) data_b3_req;
- 		struct data_b3_ind {
- 			__u16 fakencci;
- 			__u16 datalen;
- 			__u32 unused;
- 			__u8  blocknr;
--			__u16 flags __attribute__ ((packed));
--		} data_b3_ind;
-+			__u16 flags;
-+		} __attribute__ ((packed)) data_b3_ind;
- 		struct data_b3_resp {
- 			__u16 ncci;
- 			__u8  blocknr;
--		} data_b3_resp;
-+		} __attribute__ ((packed)) data_b3_resp;
- 		struct data_b3_conf {
- 			__u16 ncci;
- 			__u8  blocknr;
--			__u16 info __attribute__ ((packed));
--		} data_b3_conf;
-+			__u16 info;
-+		} __attribute__ ((packed)) data_b3_conf;
- 	} msg;
--} actcapi_msg;
-+} __attribute__ ((packed)) actcapi_msg;
- 
- extern __inline__ unsigned short
- actcapi_nextsmsg(act2000_card *card)
-
-

linux-2.6-tux.patch:
 arch/alpha/kernel/systbls.S      |    8 
 arch/i386/kernel/syscall_table.S |   10 
 arch/ia64/kernel/entry.S         |    8 
 arch/ia64/kernel/ia64_ksyms.c    |    5 
 arch/x86_64/ia32/ia32entry.S     |   10 
 fs/dcache.c                      |   36 
 fs/exec.c                        |    2 
 fs/fcntl.c                       |    4 
 fs/namei.c                       |   18 
 fs/namespace.c                   |    2 
 fs/open.c                        |    4 
 fs/pipe.c                        |    2 
 fs/read_write.c                  |    2 
 include/asm-alpha/fcntl.h        |    1 
 include/asm-generic/fcntl.h      |    4 
 include/asm-i386/unistd.h        |    5 
 include/asm-ia64/unistd.h        |    2 
 include/asm-sparc/fcntl.h        |    1 
 include/asm-sparc64/fcntl.h      |    1 
 include/asm-x86_64/unistd.h      |   10 
 include/linux/buffer_head.h      |    1 
 include/linux/dcache.h           |    8 
 include/linux/errno.h            |    3 
 include/linux/file.h             |    2 
 include/linux/fs.h               |    7 
 include/linux/kmod.h             |    2 
 include/linux/namei.h            |    2 
 include/linux/net.h              |    1 
 include/linux/sched.h            |    5 
 include/linux/skbuff.h           |    2 
 include/linux/socket.h           |    5 
 include/linux/sysctl.h           |   50 
 include/net/sock.h               |    8 
 include/net/tcp.h                |    3 
 include/net/tux.h                |  804 ++++++++++++++
 include/net/tux_u.h              |  163 ++
 kernel/exit.c                    |    7 
 kernel/fork.c                    |    1 
 kernel/kmod.c                    |   28 
 kernel/signal.c                  |    1 
 mm/filemap.c                     |   19 
 mm/truncate.c                    |    2 
 net/Kconfig                      |    1 
 net/Makefile                     |    1 
 net/core/sock.c                  |    5 
 net/ipv4/tcp.c                   |    3 
 net/ipv4/tcp_input.c             |    1 
 net/ipv4/tcp_output.c            |    3 
 net/socket.c                     |  197 ++-
 net/tux/Kconfig                  |   25 
 net/tux/Makefile                 |   12 
 net/tux/abuf.c                   |  190 +++
 net/tux/accept.c                 |  863 +++++++++++++++
 net/tux/cachemiss.c              |  265 ++++
 net/tux/cgi.c                    |  171 +++
 net/tux/directory.c              |  302 +++++
 net/tux/extcgi.c                 |  329 +++++
 net/tux/gzip.c                   |   40 
 net/tux/input.c                  |  641 +++++++++++
 net/tux/logger.c                 |  837 ++++++++++++++
 net/tux/main.c                   | 1417 +++++++++++++++++++++++++
 net/tux/mod.c                    |  262 ++++
 net/tux/output.c                 |  352 ++++++
 net/tux/parser.h                 |  102 +
 net/tux/postpone.c               |   77 +
 net/tux/proc.c                   | 1149 ++++++++++++++++++++
 net/tux/proto_ftp.c              | 1555 +++++++++++++++++++++++++++
 net/tux/proto_http.c             | 2197 +++++++++++++++++++++++++++++++++++++++
 net/tux/redirect.c               |  172 +++
 net/tux/times.c                  |  392 ++++++
 net/tux/times.h                  |   26 
 net/tux/userspace.c              |   27 
 72 files changed, 12775 insertions(+), 98 deletions(-)

Index: linux-2.6-tux.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-tux.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-tux.patch	12 Dec 2005 05:42:39 -0000	1.8
+++ linux-2.6-tux.patch	9 Jan 2006 18:55:15 -0000	1.9
@@ -1,76 +1,3 @@
- arch/alpha/kernel/systbls.S      |    8 
- arch/i386/kernel/syscall_table.S |   10 
- arch/ia64/kernel/entry.S         |    8 
- arch/ia64/kernel/ia64_ksyms.c    |    5 
- arch/x86_64/ia32/ia32entry.S     |   10 
- fs/dcache.c                      |   36 
- fs/exec.c                        |    2 
- fs/fcntl.c                       |    4 
- fs/namei.c                       |   18 
- fs/namespace.c                   |    2 
- fs/open.c                        |    4 
- fs/pipe.c                        |    2 
- fs/read_write.c                  |    2 
- include/asm-alpha/fcntl.h        |    1 
- include/asm-generic/fcntl.h      |    4 
- include/asm-i386/unistd.h        |    5 
- include/asm-ia64/unistd.h        |    2 
- include/asm-sparc/fcntl.h        |    1 
- include/asm-sparc64/fcntl.h      |    1 
- include/asm-x86_64/unistd.h      |   10 
- include/linux/buffer_head.h      |    1 
- include/linux/dcache.h           |    8 
- include/linux/errno.h            |    3 
- include/linux/file.h             |    2 
- include/linux/fs.h               |    7 
- include/linux/kmod.h             |    2 
- include/linux/namei.h            |    2 
- include/linux/net.h              |    1 
- include/linux/sched.h            |    5 
- include/linux/skbuff.h           |    2 
- include/linux/socket.h           |    5 
- include/linux/sysctl.h           |   50 
- include/net/sock.h               |    8 
- include/net/tcp.h                |    3 
- include/net/tux.h                |  804 ++++++++++++++
- include/net/tux_u.h              |  163 ++
- kernel/exit.c                    |    7 
- kernel/fork.c                    |    1 
- kernel/kmod.c                    |   28 
- kernel/signal.c                  |    1 
- mm/filemap.c                     |   19 
- mm/truncate.c                    |    2 
- net/Kconfig                      |    1 
- net/Makefile                     |    1 
- net/core/sock.c                  |    5 
- net/ipv4/tcp.c                   |    3 
- net/ipv4/tcp_input.c             |    1 
- net/ipv4/tcp_output.c            |    1 
- net/socket.c                     |  197 ++-
- net/tux/Kconfig                  |   25 
- net/tux/Makefile                 |   12 
- net/tux/abuf.c                   |  190 +++
- net/tux/accept.c                 |  863 +++++++++++++++
- net/tux/cachemiss.c              |  265 ++++
- net/tux/cgi.c                    |  171 +++
- net/tux/directory.c              |  302 +++++
- net/tux/extcgi.c                 |  329 +++++
- net/tux/gzip.c                   |   40 
- net/tux/input.c                  |  641 +++++++++++
- net/tux/logger.c                 |  837 ++++++++++++++
- net/tux/main.c                   | 1417 +++++++++++++++++++++++++
- net/tux/mod.c                    |  262 ++++
- net/tux/output.c                 |  352 ++++++
- net/tux/parser.h                 |  102 +
- net/tux/postpone.c               |   77 +
- net/tux/proc.c                   | 1149 ++++++++++++++++++++
- net/tux/proto_ftp.c              | 1555 +++++++++++++++++++++++++++
- net/tux/proto_http.c             | 2197 +++++++++++++++++++++++++++++++++++++++
- net/tux/redirect.c               |  172 +++
- net/tux/times.c                  |  392 ++++++
- net/tux/times.h                  |   26 
- net/tux/userspace.c              |   27 
- 72 files changed, 12773 insertions(+), 98 deletions(-)
 
 Index: linux/arch/alpha/kernel/systbls.S
 ===================================================================
@@ -96,7 +23,7 @@
 ===================================================================
 --- linux.orig/arch/i386/kernel/syscall_table.S
 +++ linux/arch/i386/kernel/syscall_table.S
-@@ -222,7 +222,15 @@ ENTRY(sys_call_table)
+@@ -221,7 +221,15 @@ ENTRY(sys_call_table)
  	.long sys_madvise
  	.long sys_getdents64	/* 220 */
  	.long sys_fcntl64
@@ -137,7 +64,7 @@
 ===================================================================
 --- linux.orig/arch/ia64/kernel/ia64_ksyms.c
 +++ linux/arch/ia64/kernel/ia64_ksyms.c
-@@ -58,6 +58,11 @@ EXPORT_SYMBOL(__strlen_user);
+@@ -59,6 +59,11 @@ EXPORT_SYMBOL(__strlen_user);
  EXPORT_SYMBOL(__strncpy_from_user);
  EXPORT_SYMBOL(__strnlen_user);
  
@@ -178,11 +105,11 @@
  {
  	if (dentry->d_op && dentry->d_op->d_release)
  		dentry->d_op->d_release(dentry);
-+	if (dentry->d_extra_attributes) {
-+		kfree(dentry->d_extra_attributes);
-+		dentry->d_extra_attributes = NULL;
-+	}
-  	call_rcu(&dentry->d_rcu, d_callback);
++ 	if (dentry->d_extra_attributes) {
++ 		kfree(dentry->d_extra_attributes);
++ 		dentry->d_extra_attributes = NULL;
++ 	}
+  	call_rcu(&dentry->d_u.d_rcu, d_callback);
  }
  
 @@ -742,6 +746,7 @@ struct dentry *d_alloc(struct dentry * p
@@ -197,18 +124,18 @@
  	/* Unhash the target: dput() will then get rid of it */
  	__d_drop(target);
  
-+	/* flush any possible attributes */
-+	if (dentry->d_extra_attributes) {
-+		kfree(dentry->d_extra_attributes);
-+		dentry->d_extra_attributes = NULL;
-+	}
-+	if (target->d_extra_attributes) {
-+		kfree(target->d_extra_attributes);
-+		target->d_extra_attributes = NULL;
-+	}
-+
- 	list_del(&dentry->d_child);
- 	list_del(&target->d_child);
++ 	/* flush any possible attributes */
++ 	if (dentry->d_extra_attributes) {
++ 		kfree(dentry->d_extra_attributes);
++ 		dentry->d_extra_attributes = NULL;
++ 	}
++ 	if (target->d_extra_attributes) {
++ 		kfree(target->d_extra_attributes);
++ 		target->d_extra_attributes = NULL;
++ 	}
++ 
+ 	list_del(&dentry->d_u.d_child);
+ 	list_del(&target->d_u.d_child);
  
 @@ -1353,7 +1368,7 @@ already_unhashed:
   *
@@ -256,7 +183,7 @@
 ===================================================================
 --- linux.orig/fs/exec.c
 +++ linux/fs/exec.c
-@@ -1450,6 +1450,8 @@ int do_coredump(long signr, int exit_cod
+@@ -1440,6 +1440,8 @@ int do_coredump(long signr, int exit_cod
  	binfmt = current->binfmt;
  	if (!binfmt || !binfmt->core_dump)
  		goto fail;
@@ -375,7 +302,7 @@
 ===================================================================
 --- linux.orig/fs/open.c
 +++ linux/fs/open.c
-@@ -542,6 +542,8 @@ out:
+@@ -543,6 +543,8 @@ out:
  	return error;
  }
  
@@ -384,7 +311,7 @@
  asmlinkage long sys_fchdir(unsigned int fd)
  {
  	struct file *file;
-@@ -598,6 +600,8 @@ out:
+@@ -599,6 +601,8 @@ out:
  	return error;
  }
  
@@ -410,7 +337,7 @@
 ===================================================================
 --- linux.orig/fs/read_write.c
 +++ linux/fs/read_write.c
-@@ -360,6 +360,8 @@ asmlinkage ssize_t sys_write(unsigned in
+@@ -374,6 +374,8 @@ asmlinkage ssize_t sys_write(unsigned in
  	return ret;
  }
  
@@ -450,15 +377,15 @@
 ===================================================================
 --- linux.orig/include/asm-i386/unistd.h
 +++ linux/include/asm-i386/unistd.h
-@@ -302,6 +302,7 @@
+@@ -303,6 +303,7 @@
  
- #define NR_syscalls 294
+ #define NR_syscalls 295
  
 +#ifndef __KERNEL_SYSCALLS_NO_ERRNO__
  /*
   * user-visible error numbers are in the range -1 - -128: see
   * <asm-i386/errno.h>
-@@ -315,6 +316,10 @@ do { \
+@@ -316,6 +317,10 @@ do { \
  	return (type) (res); \
  } while (0)
  
@@ -531,8 +458,8 @@
 ===================================================================
 --- linux.orig/include/linux/buffer_head.h
 +++ linux/include/linux/buffer_head.h
-@@ -200,6 +200,7 @@ int cont_prepare_write(struct page*, uns
- int generic_cont_expand(struct inode *inode, loff_t size) ;
+@@ -201,6 +201,7 @@ int generic_cont_expand(struct inode *in
+ int generic_cont_expand_simple(struct inode *inode, loff_t size);
  int block_commit_write(struct page *page, unsigned from, unsigned to);
  int block_sync_page(struct page *);
 +void flush_inode_pages (struct inode * inode);
@@ -543,15 +470,15 @@
 ===================================================================
 --- linux.orig/include/linux/dcache.h
 +++ linux/include/linux/dcache.h
-@@ -102,6 +102,7 @@ struct dentry {
+@@ -108,6 +108,7 @@ struct dentry {
  	struct dentry_operations *d_op;
  	struct super_block *d_sb;	/* The root of the dentry tree */
  	void *d_fsdata;			/* fs-specific data */
-+	void * d_extra_attributes;	/* TUX-specific data */
-  	struct rcu_head d_rcu;
++	void *d_extra_attributes;	/* TUX-specific data */
  	struct dcookie_struct *d_cookie; /* cookie, if any */
  	int d_mounted;
-@@ -211,6 +212,7 @@ extern void shrink_dcache_sb(struct supe
+ 	unsigned char d_iname[DNAME_INLINE_LEN_MIN];	/* small names */
+@@ -216,6 +217,7 @@ extern void shrink_dcache_sb(struct supe
  extern void shrink_dcache_parent(struct dentry *);
  extern void shrink_dcache_anon(struct hlist_head *);
  extern int d_invalidate(struct dentry *);
@@ -559,7 +486,7 @@
  
  /* only used at mount-time */
  extern struct dentry * d_alloc_root(struct inode *);
-@@ -271,8 +273,12 @@ extern struct dentry * __d_lookup(struct
+@@ -276,8 +278,12 @@ extern struct dentry * __d_lookup(struct
  /* validate "insecure" dentry pointer */
  extern int d_validate(struct dentry *, struct dentry *);
  
@@ -602,7 +529,7 @@
 ===================================================================
 --- linux.orig/include/linux/fs.h
 +++ linux/include/linux/fs.h
-@@ -1537,7 +1537,7 @@ ssize_t generic_file_write_nolock(struct
+@@ -1570,7 +1570,7 @@ ssize_t generic_file_write_nolock(struct
  extern ssize_t generic_file_sendfile(struct file *, loff_t *, size_t, read_actor_t, void *);
  extern void do_generic_mapping_read(struct address_space *mapping,
  				    struct file_ra_state *, struct file *,
@@ -611,7 +538,7 @@
  extern void
  file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
  extern ssize_t generic_file_readv(struct file *filp, const struct iovec *iov, 
-@@ -1569,14 +1569,15 @@ static inline int xip_truncate_page(stru
+@@ -1602,14 +1602,15 @@ static inline int xip_truncate_page(stru
  
  static inline void do_generic_file_read(struct file * filp, loff_t *ppos,
  					read_descriptor_t * desc,
@@ -670,7 +597,7 @@
 ===================================================================
 --- linux.orig/include/linux/sched.h
 +++ linux/include/linux/sched.h
-@@ -807,6 +807,11 @@ struct task_struct {
+@@ -804,6 +804,11 @@ struct task_struct {
  	int (*notifier)(void *priv);
  	void *notifier_data;
  	sigset_t *notifier_mask;
@@ -686,7 +613,7 @@
 ===================================================================
 --- linux.orig/include/linux/skbuff.h
 +++ linux/include/linux/skbuff.h
-@@ -1327,6 +1327,8 @@ static inline unsigned int skb_checksum_
+@@ -1328,6 +1328,8 @@ static inline unsigned int skb_checksum_
  		__skb_checksum_complete(skb);
  }
  
@@ -699,7 +626,7 @@
 ===================================================================
 --- linux.orig/include/linux/socket.h
 +++ linux/include/linux/socket.h
-@@ -299,6 +299,11 @@ extern int move_addr_to_user(void *kaddr
+@@ -298,6 +298,11 @@ extern int move_addr_to_user(void *kaddr
  extern int move_addr_to_kernel(void __user *uaddr, int ulen, void *kaddr);
  extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
  
@@ -715,7 +642,7 @@
 ===================================================================
 --- linux.orig/include/linux/sysctl.h
 +++ linux/include/linux/sysctl.h
-@@ -205,6 +205,7 @@ enum
+@@ -207,6 +207,7 @@ enum
  	NET_SCTP=17,
  	NET_LLC=18,
  	NET_NETFILTER=19,
@@ -723,7 +650,7 @@
  };
  
  /* /proc/sys/kernel/random */
-@@ -725,6 +726,55 @@ enum {
+@@ -731,6 +732,55 @@ enum {
  	NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
  };
  
@@ -830,7 +757,7 @@
 ===================================================================
 --- linux.orig/include/net/tcp.h
 +++ linux/include/net/tcp.h
-@@ -310,6 +310,8 @@ extern void			tcp_shutdown (struct sock 
+@@ -263,6 +263,8 @@ extern void			tcp_shutdown (struct sock 
  
  extern int			tcp_v4_rcv(struct sk_buff *skb);
  
@@ -839,7 +766,7 @@
  extern int			tcp_v4_remember_stamp(struct sock *sk);
  
  extern int		    	tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
-@@ -467,6 +469,7 @@ extern int  tcp_send_synack(struct sock 
+@@ -422,6 +424,7 @@ extern int  tcp_send_synack(struct sock 
  extern void tcp_push_one(struct sock *, unsigned int mss_now);
  extern void tcp_send_ack(struct sock *sk);
  extern void tcp_send_delayed_ack(struct sock *sk);
@@ -1828,7 +1755,7 @@
 ===================================================================
 --- linux.orig/kernel/exit.c
 +++ linux/kernel/exit.c
-@@ -845,6 +845,13 @@ fastcall NORET_TYPE void do_exit(long co
+@@ -844,6 +844,13 @@ fastcall NORET_TYPE void do_exit(long co
   		del_timer_sync(&tsk->signal->real_timer);
  		exit_itimers(tsk->signal);
  		acct_process(code);
@@ -1846,7 +1773,7 @@
 ===================================================================
 --- linux.orig/kernel/fork.c
 +++ linux/kernel/fork.c
-@@ -896,6 +896,7 @@ static task_t *copy_process(unsigned lon
+@@ -901,6 +901,7 @@ static task_t *copy_process(unsigned lon
  	p = dup_task_struct(current);
  	if (!p)
  		goto fork_out;
@@ -1912,7 +1839,7 @@
 ===================================================================
 --- linux.orig/kernel/signal.c
 +++ linux/kernel/signal.c
-@@ -430,6 +430,7 @@ flush_signal_handlers(struct task_struct
+@@ -440,6 +440,7 @@ flush_signal_handlers(struct task_struct
  	}
  }
  
@@ -1924,7 +1851,7 @@
 ===================================================================
 --- linux.orig/mm/filemap.c
 +++ linux/mm/filemap.c
-@@ -718,7 +718,8 @@ void do_generic_mapping_read(struct addr
+@@ -733,7 +733,8 @@ void do_generic_mapping_read(struct addr
  			     struct file *filp,
  			     loff_t *ppos,
  			     read_descriptor_t *desc,
@@ -1934,7 +1861,7 @@
  {
  	struct inode *inode = mapping->host;
  	unsigned long index;
-@@ -768,11 +769,21 @@ void do_generic_mapping_read(struct addr
+@@ -783,11 +784,21 @@ void do_generic_mapping_read(struct addr
  find_page:
  		page = find_get_page(mapping, index);
  		if (unlikely(page == NULL)) {
@@ -1957,7 +1884,7 @@
  page_ok:
  
  		/* If users can be writing to this page using arbitrary
-@@ -1028,7 +1039,7 @@ __generic_file_aio_read(struct kiocb *io
+@@ -1048,7 +1059,7 @@ __generic_file_aio_read(struct kiocb *io
  			if (desc.count == 0)
  				continue;
  			desc.error = 0;
@@ -1966,7 +1893,7 @@
  			retval += desc.written;
  			if (desc.error) {
  				retval = retval ?: desc.error;
-@@ -1102,7 +1113,7 @@ ssize_t generic_file_sendfile(struct fil
+@@ -1122,7 +1133,7 @@ ssize_t generic_file_sendfile(struct fil
  	desc.arg.data = target;
  	desc.error = 0;
  
@@ -1979,7 +1906,7 @@
 ===================================================================
 --- linux.orig/mm/truncate.c
 +++ linux/mm/truncate.c
-@@ -224,6 +224,8 @@ unlock:
+@@ -253,6 +253,8 @@ unlock:
  	return ret;
  }
  
@@ -2048,7 +1975,7 @@
  {
  	struct tcp_sock *tp = tcp_sk(sk);
  	int time_to_ack = 0;
-@@ -2144,3 +2144,4 @@ EXPORT_SYMBOL(tcp_sendpage);
+@@ -2142,3 +2142,4 @@ EXPORT_SYMBOL(tcp_sendpage);
  EXPORT_SYMBOL(tcp_setsockopt);
  EXPORT_SYMBOL(tcp_shutdown);
  EXPORT_SYMBOL(tcp_statistics);
@@ -2057,7 +1984,7 @@
 ===================================================================
 --- linux.orig/net/ipv4/tcp_input.c
 +++ linux/net/ipv4/tcp_input.c
-@@ -3433,6 +3433,7 @@ static int tcp_prune_queue(struct sock *
+@@ -3473,6 +3473,7 @@ static int tcp_prune_queue(struct sock *
  	return -1;
  }
  
@@ -2069,7 +1996,16 @@
 ===================================================================
 --- linux.orig/net/ipv4/tcp_output.c
 +++ linux/net/ipv4/tcp_output.c
-@@ -1069,6 +1069,7 @@ void __tcp_push_pending_frames(struct so
+@@ -791,6 +791,8 @@ unsigned int tcp_current_mss(struct sock
+ 	return mss_now;
+ }
+ 
++EXPORT_SYMBOL_GPL(tcp_current_mss);
++
+ /* Congestion window validation. (RFC2861) */
+ 
+ static void tcp_cwnd_validate(struct sock *sk, struct tcp_sock *tp)
+@@ -1156,6 +1158,7 @@ void __tcp_push_pending_frames(struct so
  			tcp_check_probe_timer(sk, tp);
  	}
  }
@@ -2273,7 +2209,7 @@
  /*
   *	In theory you can't get an open on this inode, but /proc provides
   *	a back door. Remember to keep it shut otherwise you'll let the
-@@ -1041,6 +1055,8 @@ static int sock_fasync(int fd, struct fi
+@@ -1044,6 +1058,8 @@ static int sock_fasync(int fd, struct fi
  	}
  
  out:
@@ -2282,9 +2218,9 @@
  	release_sock(sock->sk);
  	return 0;
  }
-@@ -2067,6 +2083,51 @@ void __init sock_init(void)
- #endif
- }
+@@ -2072,6 +2088,51 @@ static int __init sock_init(void)
+ 
+ core_initcall(sock_init);	/* early initcall */
  
 +int tux_Dprintk;
 +int tux_TDprintk;
@@ -13852,13 +13788,4 @@
 + *
 + ****************************************************************/
 +
---- linux-2.6.14/net/ipv4/tcp_output.c~	2005-12-12 00:42:02.000000000 -0500
-+++ linux-2.6.14/net/ipv4/tcp_output.c	2005-12-12 00:42:17.000000000 -0500
-@@ -703,6 +703,7 @@ unsigned int tcp_current_mss(struct sock
- 
- 	return mss_now;
- }
-+EXPORT_SYMBOL_GPL(tcp_current_mss);
- 
- /* Congestion window validation. (RFC2861) */
- 
+

linux-2.6-vm-clear-unreclaimable.patch:
 linux-2.6.14/mm/filemap.c    |    7 +++++++
 linux-2.6.15/mm/page_alloc.c |    5 +++++
 2 files changed, 12 insertions(+)

Index: linux-2.6-vm-clear-unreclaimable.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-vm-clear-unreclaimable.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-vm-clear-unreclaimable.patch	6 Jan 2006 08:08:13 -0000	1.1
+++ linux-2.6-vm-clear-unreclaimable.patch	9 Jan 2006 18:55:15 -0000	1.2
@@ -19,18 +19,17 @@
  	wake_up_page(page, PG_writeback);
  }
  EXPORT_SYMBOL(end_page_writeback);
---- linux-2.6.14/mm/page_alloc.c~	2005-12-10 01:47:51.000000000 -0500
-+++ linux-2.6.14/mm/page_alloc.c	2005-12-10 01:48:25.000000000 -0500
-@@ -657,6 +657,12 @@ static void fastcall free_hot_cold_page(
- 	pcp->count++;
- 	if (pcp->count >= pcp->high)
- 		pcp->count -= free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
-+	else if (zone->all_unreclaimable) {
+--- linux-2.6.15/mm/page_alloc.c~	2006-01-09 13:40:03.000000000 -0500
++++ linux-2.6.15/mm/page_alloc.c	2006-01-09 13:40:50.000000000 -0500
+@@ -722,6 +722,11 @@ static void fastcall free_hot_cold_page(
+ 	if (pcp->count >= pcp->high) {
+ 		free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
+ 		pcp->count -= pcp->batch;
++	} else if (zone->all_unreclaimable) {
 +		spin_lock(&zone->lock);
 +		zone->all_unreclaimable = 0;
 +		zone->pages_scanned = 0;
 +		spin_unlock(&zone->lock);
-+	}
+ 	}
  	local_irq_restore(flags);
  	put_cpu();
- }

linux-2.6-x86-tune-p4.patch:
 linux-2.6.12/arch/x86_64/Makefile   |    4 +---
 linux-2.6.15/arch/i386/Makefile.cpu |    2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

Index: linux-2.6-x86-tune-p4.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-x86-tune-p4.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-x86-tune-p4.patch	2 Nov 2005 11:29:10 -0000	1.2
+++ linux-2.6-x86-tune-p4.patch	9 Jan 2006 18:55:15 -0000	1.3
@@ -1,10 +1,9 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-1/arch/i386/Makefile linux-212/arch/i386/Makefile
---- linux-2.6.10/arch/i386/Makefile.cpu
-+++ linux-2.6.10/arch/i386/Makefile.cpu
-@@ -33,7 +33,7 @@ cflags-$(CONFIG_M486)		+= -march=i486
+--- linux-2.6.15/arch/i386/Makefile.cpu~	2006-01-09 11:39:04.000000000 -0500
++++ linux-2.6.15/arch/i386/Makefile.cpu	2006-01-09 11:39:36.000000000 -0500
+@@ -15,7 +15,7 @@ cflags-$(CONFIG_M486)		+= -march=i486
  cflags-$(CONFIG_M586)		+= -march=i586
  cflags-$(CONFIG_M586TSC)	+= -march=i586
- cflags-$(CONFIG_M586MMX)	+= $(call cc-option,-march=pentium-mmx,-march=i586)
+ cflags-$(CONFIG_M586MMX)	+= -march=pentium-mmx
 -cflags-$(CONFIG_M686)		+= -march=i686
 +cflags-$(CONFIG_M686)		+= -march=i686 $(call tune,pentium4)
  cflags-$(CONFIG_MPENTIUMII)	+= -march=i686 $(call tune,pentium2)


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/sources,v
retrieving revision 1.259
retrieving revision 1.260
diff -u -r1.259 -r1.260
--- sources	8 Jan 2006 02:04:10 -0000	1.259
+++ sources	9 Jan 2006 18:55:15 -0000	1.260
@@ -1,4 +1,4 @@
 cdf95e00f5111e31f78e1d97304d9522  linux-2.6.15.tar.bz2
-d1eedbc54fa76391548a927b3325d235  patch-2.6.15-git3.bz2
 1e8dda938d8fb06863d7276b79d6e544  bcm43xx-20060106.tar.bz2
 1eb2bb778090c59fbeba6278d63a9309  ieee80211softmac-20060103.tar.bz2
+f05d69868a2452b980185889f5a14fb4  patch-2.6.15-git5.bz2


Index: upstream
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/upstream,v
retrieving revision 1.240
retrieving revision 1.241
diff -u -r1.240 -r1.241
--- upstream	8 Jan 2006 01:59:03 -0000	1.240
+++ upstream	9 Jan 2006 18:55:15 -0000	1.241
@@ -1,3 +1,3 @@
 linux-2.6.15.tar.bz2
-patch-2.6.15-git3.bz2
+patch-2.6.15-git5.bz2
 


--- linux-2.6-debug-taint-check.patch DELETED ---


--- linux-2.6-debug-taint-proprietary-helpers.patch DELETED ---


--- linux-2.6-vm-debug.patch DELETED ---


--- patch-2.6.15-git3.bz2.sign DELETED ---




More information about the fedora-cvs-commits mailing list