Author: mguevara                     Date: Mon Oct 19 00:34:43 2009 GMT
Module: packages                      Tag: GRSECURITY_RAW
---- Log message:
- up to 
http://www.grsecurity.net/~spender/grsecurity-2.1.14-2.6.31.4-200910181015.patch

---- Files affected:
packages/kernel:
   kernel-grsec_full.patch (1.3.2.17 -> 1.3.2.18) 

---- Diffs:

================================================================
Index: packages/kernel/kernel-grsec_full.patch
diff -u packages/kernel/kernel-grsec_full.patch:1.3.2.17 
packages/kernel/kernel-grsec_full.patch:1.3.2.18
--- packages/kernel/kernel-grsec_full.patch:1.3.2.17    Wed Oct 14 23:57:51 2009
+++ packages/kernel/kernel-grsec_full.patch     Mon Oct 19 02:34:34 2009
@@ -6454,24 +6454,31 @@
  extern int iommu_pass_through;
 diff -urNp linux-2.6.31.4/arch/x86/include/asm/irqflags.h 
linux-2.6.31.4/arch/x86/include/asm/irqflags.h
 --- linux-2.6.31.4/arch/x86/include/asm/irqflags.h     2009-10-05 
13:12:06.000000000 -0400
-+++ linux-2.6.31.4/arch/x86/include/asm/irqflags.h     2009-10-14 
17:18:30.945315132 -0400
-@@ -147,6 +147,20 @@ static inline unsigned long __raw_local_
++++ linux-2.6.31.4/arch/x86/include/asm/irqflags.h     2009-10-18 
10:12:57.682033309 -0400
+@@ -147,6 +147,27 @@ static inline unsigned long __raw_local_
  #define INTERRUPT_RETURN              iret
  #define ENABLE_INTERRUPTS_SYSEXIT     sti; sysexit
  #define GET_CR0_INTO_EAX              movl %cr0, %eax
 +
 +/* PaX: special register usage in entry_32.S, beware */
-+#define PAX_OPEN_KERNEL               \
-+      movl %esi, %cr0
++#ifdef CONFIG_PAX_KERNEXEC
++#define PAX_RESTORE_KERNEL    \
++      bt $16, %esi;           \
++      jc 1f;                  \
++      movl %esi, %cr0;        \
++1:
 +
 +#define PAX_CLOSE_KERNEL      \
-+      movl %cr0, %edx;        \
-+      testl $X86_CR0_WP, %edx;\
-+      jnz 1f;                 \
-+      movl %edx, %esi;        \
-+      orl $X86_CR0_WP, %esi;  \
-+      movl %esi, %cr0;        \
++      movl %cr0, %esi;        \
++      movl %esi, %edx;        \
++      bts $16, %edx;          \
++      jc 1f;                  \
++      movl %edx, %cr0;        \
 +1:
++#else
++#define PAX_RESTORE_KERNEL
++#define PAX_CLOSE_KERNEL
++#endif
 +
  #endif
  
@@ -6902,7 +6909,7 @@
  #define __VIRTUAL_MASK_SHIFT  47
 diff -urNp linux-2.6.31.4/arch/x86/include/asm/paravirt.h 
linux-2.6.31.4/arch/x86/include/asm/paravirt.h
 --- linux-2.6.31.4/arch/x86/include/asm/paravirt.h     2009-10-05 
13:12:06.000000000 -0400
-+++ linux-2.6.31.4/arch/x86/include/asm/paravirt.h     2009-10-14 
17:18:30.945315132 -0400
++++ linux-2.6.31.4/arch/x86/include/asm/paravirt.h     2009-10-18 
10:08:40.907788965 -0400
 @@ -350,6 +350,12 @@ struct pv_mmu_ops {
           an mfn.  We can tell which is which from the index. */
        void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
@@ -6916,7 +6923,40 @@
  };
  
  struct raw_spinlock;
-@@ -1437,6 +1443,21 @@ static inline void __set_fixmap(unsigned
+@@ -528,10 +534,11 @@ int paravirt_disable_iospace(void);
+ #define EXTRA_CLOBBERS
+ #define VEXTRA_CLOBBERS
+ #else  /* CONFIG_X86_64 */
++/* [re]ax isn't an arg, but the return val */
+ #define PVOP_VCALL_ARGS                                       \
+       unsigned long __edi = __edi, __esi = __esi,     \
+-              __edx = __edx, __ecx = __ecx
+-#define PVOP_CALL_ARGS                PVOP_VCALL_ARGS, __eax
++              __edx = __edx, __ecx = __ecx, __eax = __eax
++#define PVOP_CALL_ARGS                PVOP_VCALL_ARGS
+ 
+ #define PVOP_CALL_ARG1(x)             "D" ((unsigned long)(x))
+ #define PVOP_CALL_ARG2(x)             "S" ((unsigned long)(x))
+@@ -543,6 +550,7 @@ int paravirt_disable_iospace(void);
+                               "=c" (__ecx)
+ #define PVOP_CALL_CLOBBERS    PVOP_VCALL_CLOBBERS, "=a" (__eax)
+ 
++/* void functions are still allowed [re]ax for scratch */
+ #define PVOP_VCALLEE_CLOBBERS "=a" (__eax)
+ #define PVOP_CALLEE_CLOBBERS  PVOP_VCALLEE_CLOBBERS
+ 
+@@ -617,8 +625,8 @@ int paravirt_disable_iospace(void);
+                      VEXTRA_CLOBBERS,                                 \
+                      pre, post, ##__VA_ARGS__)
+ 
+-#define __PVOP_VCALLEESAVE(rettype, op, pre, post, ...)                       
\
+-      ____PVOP_CALL(rettype, op.func, CLBR_RET_REG,                   \
++#define __PVOP_VCALLEESAVE(op, pre, post, ...)                                
\
++      ____PVOP_VCALL(op.func, CLBR_RET_REG,                           \
+                     PVOP_VCALLEE_CLOBBERS, ,                          \
+                     pre, post, ##__VA_ARGS__)
+ 
+@@ -1437,6 +1445,21 @@ static inline void __set_fixmap(unsigned
        pv_mmu_ops.set_fixmap(idx, phys, flags);
  }
  
@@ -6938,7 +6978,54 @@
  void _paravirt_nop(void);
  u32 _paravirt_ident_32(u32);
  u64 _paravirt_ident_64(u64);
-@@ -1688,7 +1709,7 @@ static inline unsigned long __raw_local_
+@@ -1565,42 +1588,22 @@ extern struct paravirt_patch_site __para
+ 
+ static inline unsigned long __raw_local_save_flags(void)
+ {
+-      unsigned long f;
+-
+-      asm volatile(paravirt_alt(PARAVIRT_CALL)
+-                   : "=a"(f)
+-                   : paravirt_type(pv_irq_ops.save_fl),
+-                     paravirt_clobber(CLBR_EAX)
+-                   : "memory", "cc");
+-      return f;
++      return PVOP_CALLEE0(unsigned long, pv_irq_ops.save_fl);
+ }
+ 
+ static inline void raw_local_irq_restore(unsigned long f)
+ {
+-      asm volatile(paravirt_alt(PARAVIRT_CALL)
+-                   : "=a"(f)
+-                   : PV_FLAGS_ARG(f),
+-                     paravirt_type(pv_irq_ops.restore_fl),
+-                     paravirt_clobber(CLBR_EAX)
+-                   : "memory", "cc");
++      return PVOP_VCALLEE1(pv_irq_ops.restore_fl, f);
+ }
+ 
+ static inline void raw_local_irq_disable(void)
+ {
+-      asm volatile(paravirt_alt(PARAVIRT_CALL)
+-                   :
+-                   : paravirt_type(pv_irq_ops.irq_disable),
+-                     paravirt_clobber(CLBR_EAX)
+-                   : "memory", "eax", "cc");
++      PVOP_VCALLEE0(pv_irq_ops.irq_disable);
+ }
+ 
+ static inline void raw_local_irq_enable(void)
+ {
+-      asm volatile(paravirt_alt(PARAVIRT_CALL)
+-                   :
+-                   : paravirt_type(pv_irq_ops.irq_enable),
+-                     paravirt_clobber(CLBR_EAX)
+-                   : "memory", "eax", "cc");
++      PVOP_VCALLEE0(pv_irq_ops.irq_enable);
+ }
+ 
+ static inline unsigned long __raw_local_irq_save(void)
+@@ -1688,7 +1691,7 @@ static inline unsigned long __raw_local_
  
  #define PARA_PATCH(struct, off)        ((PARAVIRT_PATCH_##struct + (off)) / 4)
  #define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 
4)
@@ -6947,21 +7034,30 @@
  #endif
  
  #define INTERRUPT_RETURN                                              \
-@@ -1713,6 +1734,18 @@ static inline unsigned long __raw_local_
+@@ -1713,6 +1716,27 @@ static inline unsigned long __raw_local_
                  jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret32))
  
  #ifdef CONFIG_X86_32
-+#define PAX_OPEN_KERNEL                                               \
++
++#ifdef CONFIG_PAX_KERNEXEC
++#define PAX_RESTORE_KERNEL                                    \
++      bt $16, %esi;                                           \
++      jc 1f;                                                  \
 +      push %eax; push %ecx;                                   \
-+      call PARA_INDIRECT(pv_mmu_ops+PV_MMU_pax_open_kernel);  \
-+      mov %eax, %edx;                                         \
-+      pop %ecx; pop %eax
++      movl %esi, %eax;                                        \
++      call PARA_INDIRECT(pv_cpu_ops+PV_CPU_write_cr0);        \
++      pop %ecx; pop %eax;                                     \
++1:
 +
 +#define PAX_CLOSE_KERNEL                                      \
 +      push %eax; push %ecx;                                   \
-+      mov %edx, %eax;                                         \
 +      call PARA_INDIRECT(pv_mmu_ops+PV_MMU_pax_close_kernel); \
++      movl %eax, %esi;                                        \
 +      pop %ecx; pop %eax
++#else
++#define PAX_RESTORE_KERNEL
++#define PAX_CLOSE_KERNEL
++#endif
 +
  #define GET_CR0_INTO_EAX                              \
        push %ecx; push %edx;                           \
@@ -8725,13 +8821,17 @@
  
 diff -urNp linux-2.6.31.4/arch/x86/kernel/asm-offsets_32.c 
linux-2.6.31.4/arch/x86/kernel/asm-offsets_32.c
 --- linux-2.6.31.4/arch/x86/kernel/asm-offsets_32.c    2009-10-05 
13:12:06.000000000 -0400
-+++ linux-2.6.31.4/arch/x86/kernel/asm-offsets_32.c    2009-10-12 
23:12:55.159062083 -0400
-@@ -115,6 +115,8 @@ void foo(void)
++++ linux-2.6.31.4/arch/x86/kernel/asm-offsets_32.c    2009-10-18 
10:09:07.003389630 -0400
+@@ -115,6 +115,12 @@ void foo(void)
        OFFSET(PV_CPU_iret, pv_cpu_ops, iret);
        OFFSET(PV_CPU_irq_enable_sysexit, pv_cpu_ops, irq_enable_sysexit);
        OFFSET(PV_CPU_read_cr0, pv_cpu_ops, read_cr0);
-+      OFFSET(PV_MMU_pax_open_kernel, pv_mmu_ops, pax_open_kernel);
++
++#ifdef CONFIG_PAX_KERNEXEC
++      OFFSET(PV_CPU_write_cr0, pv_cpu_ops, write_cr0);
 +      OFFSET(PV_MMU_pax_close_kernel, pv_mmu_ops, pax_close_kernel);
++#endif
++
  #endif
  
  #ifdef CONFIG_XEN
@@ -9388,7 +9488,7 @@
  efi_rt_function_ptr:
 diff -urNp linux-2.6.31.4/arch/x86/kernel/entry_32.S 
linux-2.6.31.4/arch/x86/kernel/entry_32.S
 --- linux-2.6.31.4/arch/x86/kernel/entry_32.S  2009-10-05 13:12:06.000000000 
-0400
-+++ linux-2.6.31.4/arch/x86/kernel/entry_32.S  2009-10-13 19:00:18.378759190 
-0400
++++ linux-2.6.31.4/arch/x86/kernel/entry_32.S  2009-10-18 10:09:07.029411525 
-0400
 @@ -191,7 +191,7 @@
  
  #endif        /* CONFIG_X86_32_LAZY_GS */
@@ -9407,17 +9507,14 @@
        movl %edx, %ds
        movl %edx, %es
        movl $(__KERNEL_PERCPU), %edx
-@@ -232,6 +232,18 @@
+@@ -232,6 +232,15 @@
        SET_KERNEL_GS %edx
  .endm
  
 +.macro SAVE_ALL
-+#ifdef CONFIG_PAX_KERNEXEC
-+      __SAVE_ALL __KERNEL_DS
-+      PAX_CLOSE_KERNEL;
-+      movl %edx, %esi;
-+#elif defined(CONFIG_PAX_PAGEEXEC) || defined(CONFIG_PAX_SEGMEXEC) || 
defined(CONFIG_PAX_MEMORY_UDEREF)
++#if defined(CONFIG_PAX_KERNEXEC) || defined(CONFIG_PAX_PAGEEXEC) || 
defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_MEMORY_UDEREF)
 +      __SAVE_ALL __KERNEL_DS
++      PAX_CLOSE_KERNEL
 +#else
 +      __SAVE_ALL __USER_DS
 +#endif
@@ -9426,7 +9523,7 @@
  .macro RESTORE_INT_REGS
        popl %ebx
        CFI_ADJUST_CFA_OFFSET -4
-@@ -352,7 +364,17 @@ check_userspace:
+@@ -352,7 +361,15 @@ check_userspace:
        movb PT_CS(%esp), %al
        andl $(X86_EFLAGS_VM | SEGMENT_RPL_MASK), %eax
        cmpl $USER_RPL, %eax
@@ -9434,9 +9531,7 @@
 +#ifdef CONFIG_PAX_KERNEXEC
 +      jae resume_userspace
 +
-+      testl $X86_CR0_WP, %esi
-+      jnz resume_kernel
-+      PAX_OPEN_KERNEL;
++      PAX_RESTORE_KERNEL
 +      jmp resume_kernel
 +#else
        jb resume_kernel                # not returning to v8086 or userspace
@@ -9444,7 +9539,7 @@
  
  ENTRY(resume_userspace)
        LOCKDEP_SYS_EXIT
-@@ -414,10 +436,9 @@ sysenter_past_esp:
+@@ -414,10 +431,9 @@ sysenter_past_esp:
        /*CFI_REL_OFFSET cs, 0*/
        /*
         * Push current_thread_info()->sysenter_return to the stack.
@@ -9457,7 +9552,7 @@
        CFI_ADJUST_CFA_OFFSET 4
        CFI_REL_OFFSET eip, 0
  
-@@ -430,9 +451,19 @@ sysenter_past_esp:
+@@ -430,9 +446,19 @@ sysenter_past_esp:
   * Load the potential sixth argument from user stack.
   * Careful about security.
   */
@@ -9477,7 +9572,7 @@
        movl %ebp,PT_EBP(%esp)
  .section __ex_table,"a"
        .align 4
-@@ -455,12 +486,23 @@ sysenter_do_call:
+@@ -455,12 +481,23 @@ sysenter_do_call:
        testl $_TIF_ALLWORK_MASK, %ecx
        jne sysexit_audit
  sysenter_exit:
@@ -9501,7 +9596,7 @@
        PTGS_TO_GS
        ENABLE_INTERRUPTS_SYSEXIT
  
-@@ -504,11 +546,17 @@ sysexit_audit:
+@@ -504,11 +541,17 @@ sysexit_audit:
  
        CFI_ENDPROC
  .pushsection .fixup,"ax"
@@ -9521,7 +9616,7 @@
  .popsection
        PTGS_TO_GS_EX
  ENDPROC(ia32_sysenter_target)
-@@ -538,6 +586,10 @@ syscall_exit:
+@@ -538,6 +581,10 @@ syscall_exit:
        testl $_TIF_ALLWORK_MASK, %ecx  # current->work
        jne syscall_exit_work
  
@@ -9532,7 +9627,7 @@
  restore_all:
        TRACE_IRQS_IRET
  restore_all_notrace:
-@@ -602,7 +654,13 @@ ldt_ss:
+@@ -602,7 +649,13 @@ ldt_ss:
        mov PT_OLDESP(%esp), %eax       /* load userspace esp */
        mov %dx, %ax                    /* eax: new kernel esp */
        sub %eax, %edx                  /* offset (low word is 0) */
@@ -9547,7 +9642,7 @@
        shr $16, %edx
        mov %dl, GDT_ENTRY_ESPFIX_SS * 8 + 4(%ebx) /* bits 16..23 */
        mov %dh, GDT_ENTRY_ESPFIX_SS * 8 + 7(%ebx) /* bits 24..31 */
-@@ -642,25 +700,19 @@ work_resched:
+@@ -642,25 +695,19 @@ work_resched:
  
  work_notifysig:                               # deal with pending signals and
                                        # notify-resume requests
@@ -9576,7 +9671,7 @@
  #endif
        xorl %edx, %edx
        call do_notify_resume
-@@ -695,6 +747,10 @@ END(syscall_exit_work)
+@@ -695,6 +742,10 @@ END(syscall_exit_work)
  
        RING0_INT_FRAME                 # can't unwind into user space anyway
  syscall_fault:
@@ -9587,7 +9682,7 @@
        GET_THREAD_INFO(%ebp)
        movl $-EFAULT,PT_EAX(%esp)
        jmp resume_userspace
-@@ -735,7 +791,13 @@ PTREGSCALL(vm86old)
+@@ -735,7 +786,13 @@ PTREGSCALL(vm86old)
   * normal stack and adjusts ESP with the matching offset.
   */
        /* fixup the stack */
@@ -9602,7 +9697,7 @@
        mov GDT_ENTRY_ESPFIX_SS * 8 + 4(%ebx), %al /* bits 16..23 */
        mov GDT_ENTRY_ESPFIX_SS * 8 + 7(%ebx), %ah /* bits 24..31 */
        shl $16, %eax
-@@ -1198,7 +1260,6 @@ return_to_handler:
+@@ -1198,7 +1255,6 @@ return_to_handler:
        ret
  #endif
  
@@ -9610,15 +9705,12 @@
  #include "syscall_table_32.S"
  
  syscall_table_size=(.-sys_call_table)
-@@ -1250,12 +1311,18 @@ error_code:
+@@ -1250,12 +1306,15 @@ error_code:
        movl %ecx, %fs
        UNWIND_ESPFIX_STACK
        GS_TO_REG %ecx
 +
-+#ifdef CONFIG_PAX_KERNEXEC
-+      PAX_CLOSE_KERNEL;
-+      movl %edx, %esi
-+#endif
++      PAX_CLOSE_KERNEL
 +
        movl PT_GS(%esp), %edi          # get the function address
        movl PT_ORIG_EAX(%esp), %edx    # get the error code
@@ -9630,32 +9722,22 @@
        movl %ecx, %ds
        movl %ecx, %es
        TRACE_IRQS_OFF
-@@ -1351,6 +1418,14 @@ nmi_stack_correct:
+@@ -1351,6 +1410,9 @@ nmi_stack_correct:
        xorl %edx,%edx          # zero error code
        movl %esp,%eax          # pt_regs pointer
        call do_nmi
 +
-+#ifdef CONFIG_PAX_KERNEXEC
-+      testl $X86_CR0_WP, %esi
-+      jnz 1f
-+      PAX_OPEN_KERNEL;
-+1:
-+#endif
++      PAX_RESTORE_KERNEL
 +
        jmp restore_all_notrace
        CFI_ENDPROC
  
-@@ -1391,6 +1466,14 @@ nmi_espfix_stack:
+@@ -1391,6 +1453,9 @@ nmi_espfix_stack:
        FIXUP_ESPFIX_STACK              # %eax == %esp
        xorl %edx,%edx                  # zero error code
        call do_nmi
 +
-+#ifdef CONFIG_PAX_KERNEXEC
-+      testl $X86_CR0_WP, %esi
-+      jnz 1f
-+      PAX_OPEN_KERNEL;
-+1:
-+#endif
++      PAX_RESTORE_KERNEL
 +
        RESTORE_REGS
        lss 12+4(%esp), %esp            # back to espfix stack
@@ -9712,7 +9794,7 @@
        /* Reserve INITRD */
 diff -urNp linux-2.6.31.4/arch/x86/kernel/head_32.S 
linux-2.6.31.4/arch/x86/kernel/head_32.S
 --- linux-2.6.31.4/arch/x86/kernel/head_32.S   2009-10-05 13:12:06.000000000 
-0400
-+++ linux-2.6.31.4/arch/x86/kernel/head_32.S   2009-10-11 15:29:56.556364216 
-0400
++++ linux-2.6.31.4/arch/x86/kernel/head_32.S   2009-10-18 10:15:00.924043933 
-0400
 @@ -19,10 +19,17 @@
  #include <asm/setup.h>
  #include <asm/processor-flags.h>
@@ -9783,7 +9865,7 @@
 +      movb %al,__KERNEL_PERCPU + 4(%edi)
 +      movb %ah,__KERNEL_PERCPU + 7(%edi)
 +      movl $__per_cpu_end - 1,%eax
-+      subl $__per_cpu_load,%eax
++      subl $__per_cpu_start,%eax
 +      movw %ax,__KERNEL_PERCPU + 0(%edi)
 +#endif
 +
@@ -10726,16 +10808,8 @@
  }
 diff -urNp linux-2.6.31.4/arch/x86/kernel/module.c 
linux-2.6.31.4/arch/x86/kernel/module.c
 --- linux-2.6.31.4/arch/x86/kernel/module.c    2009-10-05 13:12:06.000000000 
-0400
-+++ linux-2.6.31.4/arch/x86/kernel/module.c    2009-10-12 23:12:55.189930027 
-0400
-@@ -27,6 +27,7 @@
- #include <asm/system.h>
- #include <asm/page.h>
- #include <asm/pgtable.h>
-+#include <asm/desc.h>
- 
- #if 0
- #define DEBUGP printk
-@@ -34,7 +35,7 @@
++++ linux-2.6.31.4/arch/x86/kernel/module.c    2009-10-18 10:09:07.037806226 
-0400
+@@ -34,7 +34,7 @@
  #define DEBUGP(fmt...)
  #endif
  
@@ -10744,7 +10818,7 @@
  {
        struct vm_struct *area;
  
-@@ -48,9 +49,90 @@ void *module_alloc(unsigned long size)
+@@ -48,9 +48,90 @@ void *module_alloc(unsigned long size)
        if (!area)
                return NULL;
  
@@ -10837,7 +10911,7 @@
  
  /* Free memory returned from module_alloc */
  void module_free(struct module *mod, void *module_region)
-@@ -77,14 +159,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
+@@ -77,14 +158,16 @@ int apply_relocate(Elf32_Shdr *sechdrs,
        unsigned int i;
        Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr;
        Elf32_Sym *sym;
@@ -10857,7 +10931,7 @@
                /* This is the symbol it is referring to.  Note that all
                   undefined symbols have been resolved.  */
                sym = (Elf32_Sym *)sechdrs[symindex].sh_addr
-@@ -93,11 +177,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
+@@ -93,11 +176,15 @@ int apply_relocate(Elf32_Shdr *sechdrs,
                switch (ELF32_R_TYPE(rel[i].r_info)) {
                case R_386_32:
                        /* We add the value into the location given */
@@ -10875,7 +10949,7 @@
                        break;
                default:
                        printk(KERN_ERR "module %s: Unknown relocation: %u\n",
-@@ -153,21 +241,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
+@@ -153,21 +240,30 @@ int apply_relocate_add(Elf64_Shdr *sechd
                case R_X86_64_NONE:
                        break;
                case R_X86_64_64:
@@ -12174,7 +12248,7 @@
                tsk->thread.sysenter_cs = 0;
 diff -urNp linux-2.6.31.4/arch/x86/kernel/vmi_32.c 
linux-2.6.31.4/arch/x86/kernel/vmi_32.c
 --- linux-2.6.31.4/arch/x86/kernel/vmi_32.c    2009-10-05 13:12:06.000000000 
-0400
-+++ linux-2.6.31.4/arch/x86/kernel/vmi_32.c    2009-10-13 19:00:18.380098626 
-0400
++++ linux-2.6.31.4/arch/x86/kernel/vmi_32.c    2009-10-18 10:15:00.936767037 
-0400
 @@ -44,12 +44,17 @@ typedef u32 __attribute__((regparm(1))) 
  typedef u64 __attribute__((regparm(2))) (VROMLONGFUNC)(int);
  
@@ -12253,10 +12327,11 @@
        ap.fs = __KERNEL_PERCPU;
        ap.gs = __KERNEL_STACK_CANARY;
  
-@@ -486,6 +492,16 @@ static void vmi_leave_lazy_mmu(void)
+@@ -486,6 +492,18 @@ static void vmi_leave_lazy_mmu(void)
        paravirt_leave_lazy_mmu();
  }
  
++#ifdef CONFIG_PAX_KERNEXEC
 +static unsigned long vmi_pax_open_kernel(void)
 +{
 +      return 0;
@@ -12266,11 +12341,12 @@
 +{
 +      return 0;
 +}
++#endif
 +
  static inline int __init check_vmi_rom(struct vrom_header *rom)
  {
        struct pci_header *pci;
-@@ -498,6 +514,10 @@ static inline int __init check_vmi_rom(s
+@@ -498,6 +516,10 @@ static inline int __init check_vmi_rom(s
                return 0;
        if (rom->vrom_signature != VMI_SIGNATURE)
                return 0;
@@ -12281,7 +12357,7 @@
        if (rom->api_version_maj != VMI_API_REV_MAJOR ||
            rom->api_version_min+1 < VMI_API_REV_MINOR+1) {
                printk(KERN_WARNING "VMI: Found mismatched rom version %d.%d\n",
-@@ -562,7 +582,7 @@ static inline int __init probe_vmi_rom(v
+@@ -562,7 +584,7 @@ static inline int __init probe_vmi_rom(v
                struct vrom_header *romstart;
                romstart = (struct vrom_header *)isa_bus_to_virt(base);
                if (check_vmi_rom(romstart)) {
@@ -12290,7 +12366,7 @@
                        return 1;
                }
        }
-@@ -836,6 +856,11 @@ static inline int __init activate_vmi(vo
+@@ -836,6 +858,11 @@ static inline int __init activate_vmi(vo
  
        para_fill(pv_irq_ops.safe_halt, Halt);
  
@@ -12302,7 +12378,7 @@
        /*
         * Alternative instruction rewriting doesn't happen soon enough
         * to convert VMI_IRET to a call instead of a jump; so we have
-@@ -853,16 +878,16 @@ static inline int __init activate_vmi(vo
+@@ -853,16 +880,16 @@ static inline int __init activate_vmi(vo
  
  void __init vmi_init(void)
  {
@@ -12323,7 +12399,7 @@
  
  #ifdef CONFIG_X86_IO_APIC
        /* This is virtual hardware; timer routing is wired correctly */
-@@ -874,7 +899,7 @@ void __init vmi_activate(void)
+@@ -874,7 +901,7 @@ void __init vmi_activate(void)
  {
        unsigned long flags;
  
@@ -15523,16 +15599,8 @@
        }
 diff -urNp linux-2.6.31.4/arch/x86/mm/init_32.c 
linux-2.6.31.4/arch/x86/mm/init_32.c
 --- linux-2.6.31.4/arch/x86/mm/init_32.c       2009-10-05 13:12:06.000000000 
-0400
-+++ linux-2.6.31.4/arch/x86/mm/init_32.c       2009-10-11 15:29:56.560399027 
-0400
-@@ -51,6 +51,7 @@
- #include <asm/cacheflush.h>
- #include <asm/page_types.h>
- #include <asm/init.h>
-+#include <asm/desc.h>
- 
- unsigned long highstart_pfn, highend_pfn;
- 
-@@ -72,36 +73,6 @@ static __init void *alloc_low_page(void)
++++ linux-2.6.31.4/arch/x86/mm/init_32.c       2009-10-18 10:09:07.063636365 
-0400
+@@ -72,36 +72,6 @@ static __init void *alloc_low_page(void)
  }
  
  /*
@@ -15569,7 +15637,7 @@
   * Create a page table and place a pointer to it in a middle page
   * directory entry:
   */
-@@ -121,13 +92,28 @@ static pte_t * __init one_page_table_ini
+@@ -121,13 +91,28 @@ static pte_t * __init one_page_table_ini
                        page_table = (pte_t *)alloc_low_page();
  
                paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT);
@@ -15598,7 +15666,7 @@
  pmd_t * __init populate_extra_pmd(unsigned long vaddr)
  {
        int pgd_idx = pgd_index(vaddr);
-@@ -201,6 +187,7 @@ page_table_range_init(unsigned long star
+@@ -201,6 +186,7 @@ page_table_range_init(unsigned long star
        int pgd_idx, pmd_idx;
        unsigned long vaddr;
        pgd_t *pgd;
@@ -15606,7 +15674,7 @@
        pmd_t *pmd;
        pte_t *pte = NULL;
  
-@@ -210,8 +197,13 @@ page_table_range_init(unsigned long star
+@@ -210,8 +196,13 @@ page_table_range_init(unsigned long star
        pgd = pgd_base + pgd_idx;
  
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-grsec_full.patch?r1=1.3.2.17&r2=1.3.2.18&f=u

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

Reply via email to