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