SOURCES (LINUX_2_6): pax-linux-2.6.20.patch - http://www.grsecurit...
mguevara
mguevara at pld-linux.org
Mon May 7 23:19:33 CEST 2007
Author: mguevara Date: Mon May 7 21:19:33 2007 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- http://www.grsecurity.net/~paxguy1/pax-linux-2.6.21-test1.patch
---- Files affected:
SOURCES:
pax-linux-2.6.20.patch (1.1.2.21 -> 1.1.2.21.2.1)
---- Diffs:
================================================================
Index: SOURCES/pax-linux-2.6.20.patch
diff -u SOURCES/pax-linux-2.6.20.patch:1.1.2.21 SOURCES/pax-linux-2.6.20.patch:1.1.2.21.2.1
--- SOURCES/pax-linux-2.6.20.patch:1.1.2.21 Thu Apr 26 00:48:44 2007
+++ SOURCES/pax-linux-2.6.20.patch Mon May 7 23:19:28 2007
@@ -1,6 +1,6 @@
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/Documentation/dontdiff linux-2.6.20.3-pax/Documentation/dontdiff
---- linux-2.6.20.3/Documentation/dontdiff 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/Documentation/dontdiff 2007-02-10 01:32:42.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/Documentation/dontdiff linux-2.6.21-pax/Documentation/dontdiff
+--- linux-2.6.21/Documentation/dontdiff 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/Documentation/dontdiff 2007-04-26 09:01:05.000000000 +0200
@@ -55,7 +55,7 @@ aic7*seq.h*
aicasm
aicdb.h*
@@ -30,9 +30,9 @@
uImage
+utsrelease.h
zImage
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/Makefile linux-2.6.20.3-pax/Makefile
---- linux-2.6.20.3/Makefile 2007-03-13 23:27:34.000000000 +0100
-+++ linux-2.6.20.3-pax/Makefile 2007-03-13 23:27:16.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/Makefile linux-2.6.21-pax/Makefile
+--- linux-2.6.21/Makefile 2007-04-26 08:50:43.000000000 +0200
++++ linux-2.6.21-pax/Makefile 2007-04-26 09:01:05.000000000 +0200
@@ -312,7 +312,7 @@ LINUXINCLUDE := -Iinclude \
CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
@@ -42,9 +42,9 @@
-fno-strict-aliasing -fno-common
AFLAGS := -D__ASSEMBLY__
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/alpha/kernel/module.c linux-2.6.20.3-pax/arch/alpha/kernel/module.c
---- linux-2.6.20.3/arch/alpha/kernel/module.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/alpha/kernel/module.c 2007-02-05 00:56:17.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/alpha/kernel/module.c linux-2.6.21-pax/arch/alpha/kernel/module.c
+--- linux-2.6.21/arch/alpha/kernel/module.c 2007-04-26 08:50:43.000000000 +0200
++++ linux-2.6.21-pax/arch/alpha/kernel/module.c 2007-04-26 09:01:05.000000000 +0200
@@ -177,7 +177,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
/* The small sections were sorted to the end of the segment.
@@ -54,9 +54,9 @@
got = sechdrs[me->arch.gotsecindex].sh_addr;
for (i = 0; i < n; i++) {
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/alpha/kernel/osf_sys.c linux-2.6.20.3-pax/arch/alpha/kernel/osf_sys.c
---- linux-2.6.20.3/arch/alpha/kernel/osf_sys.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/alpha/kernel/osf_sys.c 2007-02-05 00:56:17.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/alpha/kernel/osf_sys.c linux-2.6.21-pax/arch/alpha/kernel/osf_sys.c
+--- linux-2.6.21/arch/alpha/kernel/osf_sys.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/alpha/kernel/osf_sys.c 2007-04-26 09:01:05.000000000 +0200
@@ -1277,6 +1277,10 @@ arch_get_unmapped_area(struct file *filp
merely specific addresses, but regions of memory -- perhaps
this feature should be incorporated into all ports? */
@@ -79,9 +79,9 @@
if (addr != (unsigned long) -ENOMEM)
return addr;
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/alpha/mm/fault.c linux-2.6.20.3-pax/arch/alpha/mm/fault.c
---- linux-2.6.20.3/arch/alpha/mm/fault.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/alpha/mm/fault.c 2007-02-05 00:56:17.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/alpha/mm/fault.c linux-2.6.21-pax/arch/alpha/mm/fault.c
+--- linux-2.6.21/arch/alpha/mm/fault.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/alpha/mm/fault.c 2007-04-26 09:01:05.000000000 +0200
@@ -24,6 +24,7 @@
#include <linux/smp_lock.h>
#include <linux/interrupt.h>
@@ -246,9 +246,9 @@
} else if (!cause) {
/* Allow reads even for write-only mappings */
if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/arm/mm/mmap.c linux-2.6.20.3-pax/arch/arm/mm/mmap.c
---- linux-2.6.20.3/arch/arm/mm/mmap.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/arm/mm/mmap.c 2007-02-05 00:56:17.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/arm/mm/mmap.c linux-2.6.21-pax/arch/arm/mm/mmap.c
+--- linux-2.6.21/arch/arm/mm/mmap.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/arm/mm/mmap.c 2007-04-26 09:01:05.000000000 +0200
@@ -61,6 +61,10 @@ arch_get_unmapped_area(struct file *filp
if (len > TASK_SIZE)
return -ENOMEM;
@@ -280,19 +280,63 @@
mm->cached_hole_size = 0;
goto full_search;
}
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/Kconfig linux-2.6.20.3-pax/arch/i386/Kconfig
---- linux-2.6.20.3/arch/i386/Kconfig 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/Kconfig 2007-02-05 00:56:17.000000000 +0100
-@@ -864,7 +864,7 @@ config HOTPLUG_CPU
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/avr32/mm/fault.c linux-2.6.21-pax/arch/avr32/mm/fault.c
+--- linux-2.6.21/arch/avr32/mm/fault.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/avr32/mm/fault.c 2007-04-26 09:01:05.000000000 +0200
+@@ -68,6 +68,23 @@ static inline int notify_page_fault(enum
+ }
+ #endif
+
++#ifdef CONFIG_PAX_PAGEEXEC
++void pax_report_insns(void *pc, void *sp)
++{
++ unsigned long i;
++
++ printk(KERN_ERR "PAX: bytes at PC: ");
++ for (i = 0; i < 20; i++) {
++ unsigned char c;
++ if (get_user(c, (unsigned char*)pc+i))
++ printk("???????? ");
++ else
++ printk("%02x ", c);
++ }
++ printk("\n");
++}
++#endif
++
+ /*
+ * This routine handles page faults. It determines the address and the
+ * problem, and then passes it off to one of the appropriate routines.
+@@ -182,6 +199,16 @@ bad_area:
+ up_read(&mm->mmap_sem);
+
+ if (user_mode(regs)) {
++
++#ifdef CONFIG_PAX_PAGEEXEC
++ if (mm->pax_flags & MF_PAX_PAGEEXEC) {
++ if (ecr == ECR_PROTECTION_X || ecr == ECR_TLB_MISS_X) {
++ pax_report_fault(regs, (void*)regs->pc, (void*)regs->sp);
++ do_exit(SIGKILL);
++ }
++ }
++#endif
++
+ /* Hmm...we have to pass address and ecr somehow... */
+ /* tsk->thread.address = address;
+ tsk->thread.error_code = ecr; */
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/Kconfig linux-2.6.21-pax/arch/i386/Kconfig
+--- linux-2.6.21/arch/i386/Kconfig 2007-04-26 08:50:54.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/Kconfig 2007-04-26 09:01:05.000000000 +0200
+@@ -892,7 +892,7 @@ config HOTPLUG_CPU
config COMPAT_VDSO
bool "Compat VDSO support"
- default y
+ default n
- depends on !PARAVIRT
help
Map the VDSO to the predictable old-style address too.
-@@ -1060,7 +1060,7 @@ config PCI
+ ---help---
+@@ -1087,7 +1087,7 @@ config PCI
choice
prompt "PCI access mode"
depends on PCI && !X86_VISWS
@@ -301,10 +345,10 @@
---help---
On PCI systems, the BIOS can be used to detect the PCI devices and
determine their configuration. However, some old PCI motherboards
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/Kconfig.cpu linux-2.6.20.3-pax/arch/i386/Kconfig.cpu
---- linux-2.6.20.3/arch/i386/Kconfig.cpu 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/Kconfig.cpu 2007-02-05 00:56:18.000000000 +0100
-@@ -267,7 +267,7 @@ config X86_PPRO_FENCE
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/Kconfig.cpu linux-2.6.21-pax/arch/i386/Kconfig.cpu
+--- linux-2.6.21/arch/i386/Kconfig.cpu 2007-04-26 08:50:54.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/Kconfig.cpu 2007-04-26 09:01:05.000000000 +0200
+@@ -262,7 +262,7 @@ config X86_PPRO_FENCE
config X86_F00F_BUG
bool
@@ -313,7 +357,7 @@
default y
config X86_WP_WORKS_OK
-@@ -297,7 +297,7 @@ config X86_CMPXCHG64
+@@ -292,7 +292,7 @@ config X86_CMPXCHG64
config X86_ALIGNMENT_16
bool
@@ -322,9 +366,9 @@
default y
config X86_GOOD_APIC
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/Kconfig.debug linux-2.6.20.3-pax/arch/i386/Kconfig.debug
---- linux-2.6.20.3/arch/i386/Kconfig.debug 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/Kconfig.debug 2007-02-05 00:56:18.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/Kconfig.debug linux-2.6.21-pax/arch/i386/Kconfig.debug
+--- linux-2.6.21/arch/i386/Kconfig.debug 2007-04-26 08:50:54.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/Kconfig.debug 2007-04-26 09:01:05.000000000 +0200
@@ -48,7 +48,7 @@ config DEBUG_PAGEALLOC
config DEBUG_RODATA
@@ -334,9 +378,9 @@
help
Mark the kernel read-only data as write-protected in the pagetables,
in order to catch accidental (and incorrect) writes to such const
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/boot/setup.S linux-2.6.20.3-pax/arch/i386/boot/setup.S
---- linux-2.6.20.3/arch/i386/boot/setup.S 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/boot/setup.S 2007-02-05 00:56:18.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/boot/setup.S linux-2.6.21-pax/arch/i386/boot/setup.S
+--- linux-2.6.21/arch/i386/boot/setup.S 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/boot/setup.S 2007-04-26 09:01:05.000000000 +0200
@@ -869,11 +869,13 @@ startup_32:
movl %eax, %gs
movl %eax, %ss
@@ -351,10 +395,10 @@
# Jump to the 32bit entry point
jmpl *(code32_start - start + (DELTA_INITSEG << 4))(%esi)
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/acpi/boot.c linux-2.6.20.3-pax/arch/i386/kernel/acpi/boot.c
---- linux-2.6.20.3/arch/i386/kernel/acpi/boot.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/acpi/boot.c 2007-02-15 01:43:45.000000000 +0100
-@@ -1152,7 +1152,7 @@ static struct dmi_system_id __initdata a
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/acpi/boot.c linux-2.6.21-pax/arch/i386/kernel/acpi/boot.c
+--- linux-2.6.21/arch/i386/kernel/acpi/boot.c 2007-04-26 08:50:55.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/acpi/boot.c 2007-04-26 09:01:05.000000000 +0200
+@@ -1116,7 +1116,7 @@ static struct dmi_system_id __initdata a
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
},
},
@@ -363,9 +407,9 @@
};
#endif /* __i386__ */
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/acpi/sleep.c linux-2.6.20.3-pax/arch/i386/kernel/acpi/sleep.c
---- linux-2.6.20.3/arch/i386/kernel/acpi/sleep.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/acpi/sleep.c 2007-02-15 01:44:30.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/acpi/sleep.c linux-2.6.21-pax/arch/i386/kernel/acpi/sleep.c
+--- linux-2.6.21/arch/i386/kernel/acpi/sleep.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/acpi/sleep.c 2007-04-26 09:01:05.000000000 +0200
@@ -94,7 +94,7 @@ static __initdata struct dmi_system_id a
DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
},
@@ -375,9 +419,9 @@
};
static int __init acpisleep_dmi_init(void)
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/acpi/wakeup.S linux-2.6.20.3-pax/arch/i386/kernel/acpi/wakeup.S
---- linux-2.6.20.3/arch/i386/kernel/acpi/wakeup.S 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/acpi/wakeup.S 2007-02-18 18:31:31.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/acpi/wakeup.S linux-2.6.21-pax/arch/i386/kernel/acpi/wakeup.S
+--- linux-2.6.21/arch/i386/kernel/acpi/wakeup.S 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/acpi/wakeup.S 2007-04-26 09:01:05.000000000 +0200
@@ -205,13 +205,11 @@ wakeup_pmode_return:
# and restore the stack ... but you need gdt for this to work
movl saved_context_esp, %esp
@@ -394,18 +438,18 @@
bogus_magic:
movw $0x0e00 + 'B', 0xb8018
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/alternative.c linux-2.6.20.3-pax/arch/i386/kernel/alternative.c
---- linux-2.6.20.3/arch/i386/kernel/alternative.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/alternative.c 2007-02-21 11:06:26.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/alternative.c linux-2.6.21-pax/arch/i386/kernel/alternative.c
+--- linux-2.6.21/arch/i386/kernel/alternative.c 2007-04-26 08:50:55.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/alternative.c 2007-04-26 09:01:05.000000000 +0200
@@ -4,6 +4,7 @@
#include <linux/list.h>
#include <asm/alternative.h>
#include <asm/sections.h>
+#include <asm/desc.h>
- static int no_replacement = 0;
static int smp_alt_once = 0;
-@@ -156,12 +157,18 @@ void apply_alternatives(struct alt_instr
+ static int debug_alternative = 0;
+@@ -149,12 +150,18 @@ void apply_alternatives(struct alt_instr
u8 *instr;
int diff;
@@ -425,7 +469,7 @@
#ifdef CONFIG_X86_64
/* vsyscall code is not mapped yet. resolve it manually. */
if (instr >= (u8 *)VSYSCALL_START && instr < (u8*)VSYSCALL_END) {
-@@ -174,6 +181,11 @@ void apply_alternatives(struct alt_instr
+@@ -167,6 +174,11 @@ void apply_alternatives(struct alt_instr
diff = a->instrlen - a->replacementlen;
nop_out(instr + a->replacementlen, diff);
}
@@ -437,7 +481,7 @@
}
#ifdef CONFIG_SMP
-@@ -182,49 +194,95 @@ static void alternatives_smp_save(struct
+@@ -175,49 +187,95 @@ static void alternatives_smp_save(struct
{
struct alt_instr *a;
@@ -545,7 +589,7 @@
}
struct smp_alt_module {
-@@ -354,10 +412,17 @@ void apply_paravirt(struct paravirt_patc
+@@ -344,10 +402,17 @@ void apply_paravirt(struct paravirt_patc
{
struct paravirt_patch *p;
@@ -564,7 +608,7 @@
p->len);
#ifdef CONFIG_DEBUG_PARAVIRT
{
-@@ -365,17 +430,20 @@ void apply_paravirt(struct paravirt_patc
+@@ -355,17 +420,20 @@ void apply_paravirt(struct paravirt_patc
/* Deliberately clobber regs using "not %reg" to find bugs. */
for (i = 0; i < 3; i++) {
if (p->len - used >= 2 && (p->clobbers & (1 << i))) {
@@ -589,25 +633,13 @@
/* Sync to be conservative, in case we patched following instructions */
sync_core();
}
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/apic.c linux-2.6.20.3-pax/arch/i386/kernel/apic.c
---- linux-2.6.20.3/arch/i386/kernel/apic.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/apic.c 2007-02-05 00:56:18.000000000 +0100
-@@ -1211,7 +1211,7 @@ inline void smp_local_timer_interrupt(vo
- {
- profile_tick(CPU_PROFILING);
- #ifdef CONFIG_SMP
-- update_process_times(user_mode_vm(get_irq_regs()));
-+ update_process_times(user_mode(get_irq_regs()));
- #endif
-
- /*
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/apm.c linux-2.6.20.3-pax/arch/i386/kernel/apm.c
---- linux-2.6.20.3/arch/i386/kernel/apm.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/apm.c 2007-02-20 23:00:20.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/apm.c linux-2.6.21-pax/arch/i386/kernel/apm.c
+--- linux-2.6.21/arch/i386/kernel/apm.c 2007-04-26 08:50:55.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/apm.c 2007-04-26 09:01:06.000000000 +0200
@@ -236,7 +236,7 @@
+
#include "io_ports.h"
- extern unsigned long get_cmos_time(void);
-extern void machine_real_restart(unsigned char *, int);
+extern void machine_real_restart(const unsigned char *, unsigned int);
@@ -684,7 +716,7 @@
0xb8, 0x00, 0x10, /* movw $0x1000,ax */
0x8e, 0xd0, /* movw ax,ss */
0xbc, 0x00, 0xf0, /* movw $0xf000,sp */
-@@ -1906,7 +1934,10 @@ static struct file_operations apm_bios_f
+@@ -1872,7 +1900,10 @@ static const struct file_operations apm_
static struct miscdevice apm_device = {
APM_MINOR_DEV,
"apm_bios",
@@ -696,7 +728,7 @@
};
-@@ -2016,210 +2047,210 @@ static struct dmi_system_id __initdata a
+@@ -1982,210 +2013,210 @@ static struct dmi_system_id __initdata a
print_if_true,
KERN_WARNING "IBM T23 - BIOS 1.03b+ and controller firmware 1.02+ may be needed for Linux APM.",
{ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
@@ -943,9 +975,9 @@
};
/*
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/asm-offsets.c linux-2.6.20.3-pax/arch/i386/kernel/asm-offsets.c
---- linux-2.6.20.3/arch/i386/kernel/asm-offsets.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/asm-offsets.c 2007-03-19 00:08:43.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/asm-offsets.c linux-2.6.21-pax/arch/i386/kernel/asm-offsets.c
+--- linux-2.6.21/arch/i386/kernel/asm-offsets.c 2007-04-26 08:50:55.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/asm-offsets.c 2007-04-26 09:01:06.000000000 +0200
@@ -16,6 +16,7 @@
#include <asm/thread_info.h>
#include <asm/elf.h>
@@ -985,9 +1017,9 @@
+ OFFSET(PARAVIRT_write_cr0, paravirt_ops, write_cr0);
#endif
}
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/common.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/common.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/common.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/common.c 2007-03-19 02:10:32.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/cpu/common.c linux-2.6.21-pax/arch/i386/kernel/cpu/common.c
+--- linux-2.6.21/arch/i386/kernel/cpu/common.c 2007-04-26 08:50:55.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/cpu/common.c 2007-04-26 09:01:06.000000000 +0200
@@ -4,7 +4,6 @@
#include <linux/smp.h>
#include <linux/module.h>
@@ -1071,7 +1103,7 @@
/* Initial PDA used by boot CPU */
struct i386_pda boot_pda = {
._pda = &boot_pda,
-@@ -672,59 +626,43 @@ static inline void set_kernel_gs(void)
+@@ -672,59 +626,43 @@ static inline void set_kernel_fs(void)
/* Initialize the CPU's GDT and PDA. The boot CPU does this for
itself, but secondaries find this done for them. */
@@ -1088,13 +1120,14 @@
- printk(KERN_CRIT "CPU%d failed to allocate GDT or PDA\n", cpu);
- return 0;
- }
-+ struct desc_struct *gdt = get_cpu_gdt_table(cpu);
-+ struct i386_pda *pda = __cpu_pda + cpu;
-
+-
- gdt = (struct desc_struct *)cpu_gdt_descr->address;
- pda = cpu_pda(cpu);
-
- BUG_ON(gdt == NULL || pda == NULL);
++ struct desc_struct *gdt = get_cpu_gdt_table(cpu);
++ struct i386_pda *pda = __cpu_pda + cpu;
++
+ cpu_gdt_descr[cpu].address = gdt;
/*
@@ -1111,7 +1144,7 @@
(u32 *)&gdt[GDT_ENTRY_PDA].b,
(unsigned long)pda, sizeof(*pda) - 1,
- 0x80 | DESCTYPE_S | 0x2, 0); /* present read-write data segment */
-+ 0x80 | DESCTYPE_S | 0x3, 0); /* present read-write data segment */
++ 0x80 | DESCTYPE_S | 0x3, 0); /* present read-write accessed data segment */
- memset(pda, 0, sizeof(*pda));
- pda->_pda = pda;
@@ -1131,7 +1164,7 @@
the real ones). */
- load_gdt(cpu_gdt_descr);
+ load_gdt(&cpu_gdt_descr[cpu]);
- set_kernel_gs();
+ set_kernel_fs();
}
/* Common CPU init for both boot and secondary CPUs */
@@ -1156,9 +1189,9 @@
cpu_set_gdt(cpu);
_cpu_init(cpu, curr);
}
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 2007-02-20 22:58:40.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c linux-2.6.21-pax/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+--- linux-2.6.21/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 2007-04-26 09:01:06.000000000 +0200
@@ -563,7 +563,7 @@ static struct dmi_system_id sw_any_bug_d
DMI_MATCH(DMI_PRODUCT_NAME, "X6DLP"),
},
@@ -1168,9 +1201,9 @@
};
#endif
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-20 22:59:00.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c linux-2.6.21-pax/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
+--- linux-2.6.21/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2007-04-26 09:01:06.000000000 +0200
@@ -229,7 +229,7 @@ static struct cpu_model models[] =
{ &cpu_ids[CPU_MP4HT_D0], NULL, 0, NULL },
{ &cpu_ids[CPU_MP4HT_E0], NULL, 0, NULL },
@@ -1189,21 +1222,9 @@
};
#endif
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/cyrix.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/cyrix.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/cyrix.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/cyrix.c 2007-02-15 01:57:59.000000000 +0100
-@@ -187,7 +187,7 @@ static void __cpuinit geode_configure(vo
- static struct pci_device_id __cpuinitdata cyrix_55x0[] = {
- { PCI_DEVICE(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5510) },
- { PCI_DEVICE(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5520) },
-- { },
-+ { PCI_DEVICE(0, 0) },
- };
- #endif
-
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/mcheck/therm_throt.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/mcheck/therm_throt.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/mcheck/therm_throt.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/mcheck/therm_throt.c 2007-02-09 14:43:03.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/cpu/mcheck/therm_throt.c linux-2.6.21-pax/arch/i386/kernel/cpu/mcheck/therm_throt.c
+--- linux-2.6.21/arch/i386/kernel/cpu/mcheck/therm_throt.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/cpu/mcheck/therm_throt.c 2007-04-26 09:01:06.000000000 +0200
@@ -148,7 +148,7 @@ static __cpuinit int thermal_throttle_cp
return NOTIFY_OK;
}
@@ -1213,9 +1234,9 @@
{
.notifier_call = thermal_throttle_cpu_callback,
};
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/cpu/mtrr/generic.c linux-2.6.20.3-pax/arch/i386/kernel/cpu/mtrr/generic.c
---- linux-2.6.20.3/arch/i386/kernel/cpu/mtrr/generic.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/cpu/mtrr/generic.c 2007-02-15 02:01:11.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/cpu/mtrr/generic.c linux-2.6.21-pax/arch/i386/kernel/cpu/mtrr/generic.c
+--- linux-2.6.21/arch/i386/kernel/cpu/mtrr/generic.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/cpu/mtrr/generic.c 2007-04-26 09:01:06.000000000 +0200
@@ -21,7 +21,7 @@ struct mtrr_state {
};
@@ -1225,9 +1246,9 @@
#undef MODULE_PARAM_PREFIX
#define MODULE_PARAM_PREFIX "mtrr."
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/crash.c linux-2.6.20.3-pax/arch/i386/kernel/crash.c
---- linux-2.6.20.3/arch/i386/kernel/crash.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/crash.c 2007-02-05 00:56:18.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/crash.c linux-2.6.21-pax/arch/i386/kernel/crash.c
+--- linux-2.6.21/arch/i386/kernel/crash.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/crash.c 2007-04-26 09:01:06.000000000 +0200
@@ -55,7 +55,7 @@ static int crash_nmi_callback(struct not
return NOTIFY_STOP;
local_irq_disable();
@@ -1237,9 +1258,9 @@
crash_fixup_ss_esp(&fixed_regs, regs);
regs = &fixed_regs;
}
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/doublefault.c linux-2.6.20.3-pax/arch/i386/kernel/doublefault.c
---- linux-2.6.20.3/arch/i386/kernel/doublefault.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/doublefault.c 2007-02-15 02:21:00.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/doublefault.c linux-2.6.21-pax/arch/i386/kernel/doublefault.c
+--- linux-2.6.21/arch/i386/kernel/doublefault.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/doublefault.c 2007-04-26 09:01:06.000000000 +0200
@@ -11,17 +11,17 @@
#define DOUBLEFAULT_STACKSIZE (1024)
@@ -1274,9 +1295,9 @@
.__cr3 = __pa(swapper_pg_dir)
};
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/efi.c linux-2.6.20.3-pax/arch/i386/kernel/efi.c
---- linux-2.6.20.3/arch/i386/kernel/efi.c 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/efi.c 2007-02-05 00:56:18.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/efi.c linux-2.6.21-pax/arch/i386/kernel/efi.c
+--- linux-2.6.21/arch/i386/kernel/efi.c 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/efi.c 2007-04-26 09:01:06.000000000 +0200
@@ -63,82 +63,43 @@ extern void * boot_ioremap(unsigned long
static unsigned long efi_rt_eflags;
@@ -1381,9 +1402,9 @@
phys_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
{
efi_status_t status;
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/efi_stub.S linux-2.6.20.3-pax/arch/i386/kernel/efi_stub.S
---- linux-2.6.20.3/arch/i386/kernel/efi_stub.S 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/efi_stub.S 2007-02-05 00:56:18.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/efi_stub.S linux-2.6.21-pax/arch/i386/kernel/efi_stub.S
+--- linux-2.6.21/arch/i386/kernel/efi_stub.S 2007-02-04 19:44:54.000000000 +0100
++++ linux-2.6.21-pax/arch/i386/kernel/efi_stub.S 2007-04-26 09:01:06.000000000 +0200
@@ -6,6 +6,7 @@
*/
@@ -1486,9 +1507,9 @@
saved_return_addr:
.long 0
efi_rt_function_ptr:
-diff -NurpX linux-2.6.20.3-pax/Documentation/dontdiff linux-2.6.20.3/arch/i386/kernel/entry.S linux-2.6.20.3-pax/arch/i386/kernel/entry.S
---- linux-2.6.20.3/arch/i386/kernel/entry.S 2007-02-04 19:44:54.000000000 +0100
-+++ linux-2.6.20.3-pax/arch/i386/kernel/entry.S 2007-03-18 12:35:53.000000000 +0100
+diff -NurpX linux-2.6.21-pax/Documentation/dontdiff linux-2.6.21/arch/i386/kernel/entry.S linux-2.6.21-pax/arch/i386/kernel/entry.S
+--- linux-2.6.21/arch/i386/kernel/entry.S 2007-04-26 08:50:56.000000000 +0200
++++ linux-2.6.21-pax/arch/i386/kernel/entry.S 2007-04-26 09:01:06.000000000 +0200
@@ -49,7 +49,6 @@
#include <asm/smp.h>
#include <asm/page.h>
@@ -1504,7 +1525,7 @@
-#define SAVE_ALL \
+#define __SAVE_ALL(_DS) \
cld; \
- pushl %gs; \
+ pushl %fs; \
CFI_ADJUST_CFA_OFFSET 4;\
@@ -129,12 +128,26 @@ VM_MASK = 0x00020000
pushl %ebx; \
@@ -1515,7 +1536,7 @@
movl %edx, %ds; \
movl %edx, %es; \
movl $(__KERNEL_PDA), %edx; \
- movl %edx, %gs
+ movl %edx, %fs
+#ifdef CONFIG_PAX_KERNEXEC
+#define SAVE_ALL \
@@ -1534,7 +1555,7 @@
#define RESTORE_INT_REGS \
popl %ebx; \
CFI_ADJUST_CFA_OFFSET -4;\
-@@ -247,7 +260,17 @@ check_userspace:
+@@ -248,7 +261,17 @@ check_userspace:
movb PT_CS(%esp), %al
andl $(VM_MASK | SEGMENT_RPL_MASK), %eax
cmpl $USER_RPL, %eax
@@ -1552,7 +1573,7 @@
ENTRY(resume_userspace)
DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt
-@@ -305,10 +328,9 @@ sysenter_past_esp:
+@@ -308,10 +331,9 @@ sysenter_past_esp:
#ifndef CONFIG_COMPAT_VDSO
/*
* Push current_thread_info()->sysenter_return to the stack.
@@ -1565,17 +1586,14 @@
#else
pushl $SYSENTER_RETURN
#endif
-@@ -319,9 +341,20 @@ sysenter_past_esp:
+@@ -322,9 +344,17 @@ sysenter_past_esp:
* Load the potential sixth argument from user stack.
* Careful about security.
*/
+ movl 12(%esp),%ebp
+
+#ifdef CONFIG_PAX_MEMORY_UDEREF
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/pax-linux-2.6.20.patch?r1=1.1.2.21&r2=1.1.2.21.2.1&f=u
More information about the pld-cvs-commit
mailing list