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(¤t->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(¤t->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(¤t->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(¤t->mm->context.user_cs, limit);
+
+ desc1 = ¤t->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 = ¤t->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(¤t->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(¤t->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(¤t->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(¤t->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