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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to