summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2011-08-06 19:50:11 -0400
committerAnthony G. Basile <blueness@gentoo.org>2011-08-06 19:50:11 -0400
commitd6c7d7de360c1becbb39a9e2acd20e12e85d7793 (patch)
tree9270f10f216de850d63cc6346ff4d9ba8d95c2a9
parentUpdate Grsec/PaX (diff)
downloadhardened-patchset-d6c7d7de360c1becbb39a9e2acd20e12e85d7793.tar.gz
hardened-patchset-d6c7d7de360c1becbb39a9e2acd20e12e85d7793.tar.bz2
hardened-patchset-d6c7d7de360c1becbb39a9e2acd20e12e85d7793.zip
Update Grsec/PaX20110805
2.2.2-2.6.32.43-201108052033 2.2.2-2.6.39.4-201108052113
-rw-r--r--2.6.32/0000_README2
-rw-r--r--2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201108052033.patch (renamed from 2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201107191826.patch)5184
-rw-r--r--2.6.32/4425_grsec-pax-without-grsec.patch2
-rw-r--r--2.6.32/4430_grsec-kconfig-default-gids.patch14
-rw-r--r--2.6.32/4437-grsec-kconfig-proc-user.patch4
-rw-r--r--2.6.32/4440_selinux-avc_audit-log-curr_ip.patch2
-rw-r--r--2.6.32/4450_check_ssp_fix.patch2
-rw-r--r--2.6.39/0000_README2
-rw-r--r--2.6.39/4420_grsecurity-2.2.2-2.6.39.4-201108052113.patch (renamed from 2.6.39/4420_grsecurity-2.2.2-2.6.39.3-201107191826.patch)30058
-rw-r--r--2.6.39/4425_grsec-pax-without-grsec.patch2
-rw-r--r--2.6.39/4430_grsec-kconfig-default-gids.patch14
-rw-r--r--2.6.39/4437-grsec-kconfig-proc-user.patch4
-rw-r--r--2.6.39/4440_selinux-avc_audit-log-curr_ip.patch2
13 files changed, 12055 insertions, 23237 deletions
diff --git a/2.6.32/0000_README b/2.6.32/0000_README
index d1f7ce8..781ce81 100644
--- a/2.6.32/0000_README
+++ b/2.6.32/0000_README
@@ -3,7 +3,7 @@ README
Individual Patch Descriptions:
-----------------------------------------------------------------------------
-Patch: 4420_grsecurity-2.2.2-2.6.32.43-201107191826.patch
+Patch: 4420_grsecurity-2.2.2-2.6.32.43-201108052033.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201107191826.patch b/2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201108052033.patch
index 27cdae4..4116dc7 100644
--- a/2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201107191826.patch
+++ b/2.6.32/4420_grsecurity-2.2.2-2.6.32.43-201108052033.patch
@@ -6226,6 +6226,17 @@ diff -urNp linux-2.6.32.43/arch/x86/boot/compressed/head_64.S linux-2.6.32.43/ar
#endif
/* Target address to relocate to for decompression */
+diff -urNp linux-2.6.32.43/arch/x86/boot/compressed/Makefile linux-2.6.32.43/arch/x86/boot/compressed/Makefile
+--- linux-2.6.32.43/arch/x86/boot/compressed/Makefile 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/boot/compressed/Makefile 2011-08-05 20:33:55.000000000 -0400
+@@ -13,6 +13,7 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
+ KBUILD_CFLAGS += $(cflags-y)
+ KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
+ KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
+
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
diff -urNp linux-2.6.32.43/arch/x86/boot/compressed/misc.c linux-2.6.32.43/arch/x86/boot/compressed/misc.c
--- linux-2.6.32.43/arch/x86/boot/compressed/misc.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/boot/compressed/misc.c 2011-04-17 15:56:46.000000000 -0400
@@ -6572,6 +6583,17 @@ diff -urNp linux-2.6.32.43/arch/x86/boot/header.S linux-2.6.32.43/arch/x86/boot/
#define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
#define VO_INIT_SIZE (VO__end - VO__text)
+diff -urNp linux-2.6.32.43/arch/x86/boot/Makefile linux-2.6.32.43/arch/x86/boot/Makefile
+--- linux-2.6.32.43/arch/x86/boot/Makefile 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/boot/Makefile 2011-08-05 20:33:55.000000000 -0400
+@@ -69,6 +69,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
+ $(call cc-option, -fno-stack-protector) \
+ $(call cc-option, -mpreferred-stack-boundary=2)
+ KBUILD_CFLAGS += $(call cc-option, -m32)
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
+
diff -urNp linux-2.6.32.43/arch/x86/boot/memory.c linux-2.6.32.43/arch/x86/boot/memory.c
--- linux-2.6.32.43/arch/x86/boot/memory.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/boot/memory.c 2011-04-17 15:56:46.000000000 -0400
@@ -9262,7 +9284,48 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/paravirt.h linux-2.6.32.43/arch/
#endif /* __ASSEMBLY__ */
diff -urNp linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h
--- linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h 2011-08-05 20:33:55.000000000 -0400
+@@ -78,19 +78,19 @@ struct pv_init_ops {
+ */
+ unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
+ unsigned long addr, unsigned len);
+-};
++} __no_const;
+
+
+ struct pv_lazy_ops {
+ /* Set deferred update mode, used for batching operations. */
+ void (*enter)(void);
+ void (*leave)(void);
+-};
++} __no_const;
+
+ struct pv_time_ops {
+ unsigned long long (*sched_clock)(void);
+ unsigned long (*get_tsc_khz)(void);
+-};
++} __no_const;
+
+ struct pv_cpu_ops {
+ /* hooks for various privileged instructions */
+@@ -186,7 +186,7 @@ struct pv_cpu_ops {
+
+ void (*start_context_switch)(struct task_struct *prev);
+ void (*end_context_switch)(struct task_struct *next);
+-};
++} __no_const;
+
+ struct pv_irq_ops {
+ /*
+@@ -217,7 +217,7 @@ struct pv_apic_ops {
+ unsigned long start_eip,
+ unsigned long start_esp);
+ #endif
+-};
++} __no_const;
+
+ struct pv_mmu_ops {
+ unsigned long (*read_cr2)(void);
@@ -316,6 +316,12 @@ struct pv_mmu_ops {
an mfn. We can tell which is which from the index. */
void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
@@ -9276,6 +9339,15 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/paravirt_types.h linux-2.6.32.43
};
struct raw_spinlock;
+@@ -326,7 +332,7 @@ struct pv_lock_ops {
+ void (*spin_lock_flags)(struct raw_spinlock *lock, unsigned long flags);
+ int (*spin_trylock)(struct raw_spinlock *lock);
+ void (*spin_unlock)(struct raw_spinlock *lock);
+-};
++} __no_const;
+
+ /* This contains all the paravirt structures: we get a convenient
+ * number for each function using the offset which we use to indicate
diff -urNp linux-2.6.32.43/arch/x86/include/asm/pci_x86.h linux-2.6.32.43/arch/x86/include/asm/pci_x86.h
--- linux-2.6.32.43/arch/x86/include/asm/pci_x86.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/include/asm/pci_x86.h 2011-04-17 15:56:46.000000000 -0400
@@ -9923,7 +9995,7 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/ptrace.h linux-2.6.32.43/arch/x8
diff -urNp linux-2.6.32.43/arch/x86/include/asm/reboot.h linux-2.6.32.43/arch/x86/include/asm/reboot.h
--- linux-2.6.32.43/arch/x86/include/asm/reboot.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/include/asm/reboot.h 2011-05-22 23:02:03.000000000 -0400
++++ linux-2.6.32.43/arch/x86/include/asm/reboot.h 2011-08-05 20:33:55.000000000 -0400
@@ -6,19 +6,19 @@
struct pt_regs;
@@ -9937,8 +10009,9 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/reboot.h linux-2.6.32.43/arch/x8
void (*shutdown)(void);
void (*crash_shutdown)(struct pt_regs *);
- void (*emergency_restart)(void);
+-};
+ void (* __noreturn emergency_restart)(void);
- };
++} __no_const;
extern struct machine_ops machine_ops;
@@ -10149,7 +10222,7 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/segment.h linux-2.6.32.43/arch/x
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
diff -urNp linux-2.6.32.43/arch/x86/include/asm/smp.h linux-2.6.32.43/arch/x86/include/asm/smp.h
--- linux-2.6.32.43/arch/x86/include/asm/smp.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/include/asm/smp.h 2011-07-01 19:00:40.000000000 -0400
++++ linux-2.6.32.43/arch/x86/include/asm/smp.h 2011-08-05 20:33:55.000000000 -0400
@@ -24,7 +24,7 @@ extern unsigned int num_processors;
DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_map);
DECLARE_PER_CPU(cpumask_var_t, cpu_core_map);
@@ -10171,6 +10244,15 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/smp.h linux-2.6.32.43/arch/x86/i
struct smp_ops {
void (*smp_prepare_boot_cpu)(void);
+@@ -60,7 +57,7 @@ struct smp_ops {
+
+ void (*send_call_func_ipi)(const struct cpumask *mask);
+ void (*send_call_func_single_ipi)(int cpu);
+-};
++} __no_const;
+
+ /* Globals due to paravirt */
+ extern void set_cpu_sibling_map(int cpu);
@@ -175,14 +172,8 @@ extern unsigned disabled_cpus __cpuinitd
extern int safe_smp_processor_id(void);
@@ -11235,6 +11317,18 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/vmi.h linux-2.6.32.43/arch/x86/i
} __attribute__((packed));
struct pnp_header {
+diff -urNp linux-2.6.32.43/arch/x86/include/asm/vmi_time.h linux-2.6.32.43/arch/x86/include/asm/vmi_time.h
+--- linux-2.6.32.43/arch/x86/include/asm/vmi_time.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/include/asm/vmi_time.h 2011-08-05 20:33:55.000000000 -0400
+@@ -43,7 +43,7 @@ extern struct vmi_timer_ops {
+ int (*wallclock_updated)(void);
+ void (*set_alarm)(u32 flags, u64 expiry, u64 period);
+ void (*cancel_alarm)(u32 flags);
+-} vmi_timer_ops;
++} __no_const vmi_timer_ops;
+
+ /* Prototypes */
+ extern void __init vmi_time_init(void);
diff -urNp linux-2.6.32.43/arch/x86/include/asm/vsyscall.h linux-2.6.32.43/arch/x86/include/asm/vsyscall.h
--- linux-2.6.32.43/arch/x86/include/asm/vsyscall.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/include/asm/vsyscall.h 2011-04-17 15:56:46.000000000 -0400
@@ -11268,6 +11362,90 @@ diff -urNp linux-2.6.32.43/arch/x86/include/asm/vsyscall.h linux-2.6.32.43/arch/
#endif /* __KERNEL__ */
#endif /* _ASM_X86_VSYSCALL_H */
+diff -urNp linux-2.6.32.43/arch/x86/include/asm/x86_init.h linux-2.6.32.43/arch/x86/include/asm/x86_init.h
+--- linux-2.6.32.43/arch/x86/include/asm/x86_init.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/include/asm/x86_init.h 2011-08-05 20:33:55.000000000 -0400
+@@ -28,7 +28,7 @@ struct x86_init_mpparse {
+ void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
+ void (*find_smp_config)(unsigned int reserve);
+ void (*get_smp_config)(unsigned int early);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_resources - platform specific resource related ops
+@@ -42,7 +42,7 @@ struct x86_init_resources {
+ void (*probe_roms)(void);
+ void (*reserve_resources)(void);
+ char *(*memory_setup)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_irqs - platform specific interrupt setup
+@@ -55,7 +55,7 @@ struct x86_init_irqs {
+ void (*pre_vector_init)(void);
+ void (*intr_init)(void);
+ void (*trap_init)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_oem - oem platform specific customizing functions
+@@ -65,7 +65,7 @@ struct x86_init_irqs {
+ struct x86_init_oem {
+ void (*arch_setup)(void);
+ void (*banner)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_paging - platform specific paging functions
+@@ -75,7 +75,7 @@ struct x86_init_oem {
+ struct x86_init_paging {
+ void (*pagetable_setup_start)(pgd_t *base);
+ void (*pagetable_setup_done)(pgd_t *base);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_timers - platform specific timer setup
+@@ -88,7 +88,7 @@ struct x86_init_timers {
+ void (*setup_percpu_clockev)(void);
+ void (*tsc_pre_init)(void);
+ void (*timer_init)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_ops - functions for platform specific setup
+@@ -101,7 +101,7 @@ struct x86_init_ops {
+ struct x86_init_oem oem;
+ struct x86_init_paging paging;
+ struct x86_init_timers timers;
+-};
++} __no_const;
+
+ /**
+ * struct x86_cpuinit_ops - platform specific cpu hotplug setups
+@@ -109,7 +109,7 @@ struct x86_init_ops {
+ */
+ struct x86_cpuinit_ops {
+ void (*setup_percpu_clockev)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_platform_ops - platform specific runtime functions
+@@ -121,7 +121,7 @@ struct x86_platform_ops {
+ unsigned long (*calibrate_tsc)(void);
+ unsigned long (*get_wallclock)(void);
+ int (*set_wallclock)(unsigned long nowtime);
+-};
++} __no_const;
+
+ extern struct x86_init_ops x86_init;
+ extern struct x86_cpuinit_ops x86_cpuinit;
diff -urNp linux-2.6.32.43/arch/x86/include/asm/xsave.h linux-2.6.32.43/arch/x86/include/asm/xsave.h
--- linux-2.6.32.43/arch/x86/include/asm/xsave.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/include/asm/xsave.h 2011-04-17 15:56:46.000000000 -0400
@@ -11422,6 +11600,17 @@ diff -urNp linux-2.6.32.43/arch/x86/Kconfig.debug linux-2.6.32.43/arch/x86/Kconf
---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 -urNp linux-2.6.32.43/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.32.43/arch/x86/kernel/acpi/realmode/Makefile
+--- linux-2.6.32.43/arch/x86/kernel/acpi/realmode/Makefile 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/kernel/acpi/realmode/Makefile 2011-08-05 20:33:55.000000000 -0400
+@@ -41,6 +41,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
+ $(call cc-option, -fno-stack-protector) \
+ $(call cc-option, -mpreferred-stack-boundary=2)
+ KBUILD_CFLAGS += $(call cc-option, -m32)
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
+
diff -urNp linux-2.6.32.43/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.32.43/arch/x86/kernel/acpi/realmode/wakeup.S
--- linux-2.6.32.43/arch/x86/kernel/acpi/realmode/wakeup.S 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-01 18:53:40.000000000 -0400
@@ -12178,6 +12367,20 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.32.43/arch
atomic_set(&mce_executing, 0);
atomic_set(&mce_callin, 0);
atomic_set(&global_nwo, 0);
+diff -urNp linux-2.6.32.43/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.32.43/arch/x86/kernel/cpu/mcheck/mce-inject.c
+--- linux-2.6.32.43/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-08-05 20:33:55.000000000 -0400
+@@ -211,7 +211,9 @@ static ssize_t mce_write(struct file *fi
+ static int inject_init(void)
+ {
+ printk(KERN_INFO "Machine check injector initialized\n");
+- mce_chrdev_ops.write = mce_write;
++ pax_open_kernel();
++ *(void **)&mce_chrdev_ops.write = mce_write;
++ pax_close_kernel();
+ register_die_notifier(&mce_raise_nb);
+ return 0;
+ }
diff -urNp linux-2.6.32.43/arch/x86/kernel/cpu/mtrr/amd.c linux-2.6.32.43/arch/x86/kernel/cpu/mtrr/amd.c
--- linux-2.6.32.43/arch/x86/kernel/cpu/mtrr/amd.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/kernel/cpu/mtrr/amd.c 2011-04-17 15:56:46.000000000 -0400
@@ -15572,7 +15775,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/module.c linux-2.6.32.43/arch/x86/ker
goto overflow;
diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/kernel/paravirt.c
--- linux-2.6.32.43/arch/x86/kernel/paravirt.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/kernel/paravirt.c 2011-07-19 18:26:50.000000000 -0400
++++ linux-2.6.32.43/arch/x86/kernel/paravirt.c 2011-08-05 20:33:55.000000000 -0400
@@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
{
return x;
@@ -15592,17 +15795,16 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
.pv_init_ops = pv_init_ops,
.pv_time_ops = pv_time_ops,
.pv_cpu_ops = pv_cpu_ops,
-@@ -133,6 +136,9 @@ static void *get_call_destination(u8 typ
+@@ -133,6 +136,8 @@ static void *get_call_destination(u8 typ
.pv_lock_ops = pv_lock_ops,
#endif
};
+
+ pax_track_stack();
-+
return *((void **)&tmpl + type);
}
-@@ -145,15 +151,19 @@ unsigned paravirt_patch_default(u8 type,
+@@ -145,15 +150,19 @@ unsigned paravirt_patch_default(u8 type,
if (opfunc == NULL)
/* If there's no function, patch it with a ud2a (BUG) */
ret = paravirt_patch_insns(insnbuf, len, ud2a, ud2a+sizeof(ud2a));
@@ -15617,15 +15819,15 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
ret = paravirt_patch_ident_32(insnbuf, len);
- else if (opfunc == _paravirt_ident_64)
+ else if (opfunc == (void *)_paravirt_ident_64)
- ret = paravirt_patch_ident_64(insnbuf, len);
++ ret = paravirt_patch_ident_64(insnbuf, len);
+#if defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
+ else if (opfunc == (void *)__raw_callee_save__paravirt_ident_64)
-+ ret = paravirt_patch_ident_64(insnbuf, len);
+ ret = paravirt_patch_ident_64(insnbuf, len);
+#endif
else if (type == PARAVIRT_PATCH(pv_cpu_ops.iret) ||
type == PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit) ||
-@@ -178,7 +188,7 @@ unsigned paravirt_patch_insns(void *insn
+@@ -178,7 +187,7 @@ unsigned paravirt_patch_insns(void *insn
if (insn_len > len || start == NULL)
insn_len = len;
else
@@ -15634,7 +15836,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
return insn_len;
}
-@@ -294,22 +304,22 @@ void arch_flush_lazy_mmu_mode(void)
+@@ -294,22 +303,22 @@ void arch_flush_lazy_mmu_mode(void)
preempt_enable();
}
@@ -15661,7 +15863,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
.save_fl = __PV_IS_CALLEE_SAVE(native_save_fl),
.restore_fl = __PV_IS_CALLEE_SAVE(native_restore_fl),
.irq_disable = __PV_IS_CALLEE_SAVE(native_irq_disable),
-@@ -321,7 +331,7 @@ struct pv_irq_ops pv_irq_ops = {
+@@ -321,7 +330,7 @@ struct pv_irq_ops pv_irq_ops = {
#endif
};
@@ -15670,7 +15872,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
.cpuid = native_cpuid,
.get_debugreg = native_get_debugreg,
.set_debugreg = native_set_debugreg,
-@@ -382,21 +392,26 @@ struct pv_cpu_ops pv_cpu_ops = {
+@@ -382,21 +391,26 @@ struct pv_cpu_ops pv_cpu_ops = {
.end_context_switch = paravirt_nop,
};
@@ -15700,7 +15902,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/paravirt.c linux-2.6.32.43/arch/x86/k
.read_cr2 = native_read_cr2,
.write_cr2 = native_write_cr2,
-@@ -467,6 +482,12 @@ struct pv_mmu_ops pv_mmu_ops = {
+@@ -467,6 +481,12 @@ struct pv_mmu_ops pv_mmu_ops = {
},
.set_fixmap = native_set_fixmap,
@@ -17692,7 +17894,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/vm86_32.c linux-2.6.32.43/arch/x86/ke
if ((segoffs >> 16) == BIOSSEG)
diff -urNp linux-2.6.32.43/arch/x86/kernel/vmi_32.c linux-2.6.32.43/arch/x86/kernel/vmi_32.c
--- linux-2.6.32.43/arch/x86/kernel/vmi_32.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/kernel/vmi_32.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/arch/x86/kernel/vmi_32.c 2011-08-05 20:33:55.000000000 -0400
@@ -44,12 +44,17 @@ typedef u32 __attribute__((regparm(1)))
typedef u64 __attribute__((regparm(2))) (VROMLONGFUNC)(int);
@@ -17719,7 +17921,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kernel/vmi_32.c linux-2.6.32.43/arch/x86/ker
void (*halt)(void);
void (*set_lazy_mode)(int mode);
-} vmi_ops;
-+} vmi_ops __read_only;
++} __no_const vmi_ops __read_only;
/* Cached VMI operations */
-struct vmi_timer_ops vmi_timer_ops;
@@ -18277,12 +18479,10 @@ diff -urNp linux-2.6.32.43/arch/x86/kvm/paging_tmpl.h linux-2.6.32.43/arch/x86/k
diff -urNp linux-2.6.32.43/arch/x86/kvm/svm.c linux-2.6.32.43/arch/x86/kvm/svm.c
--- linux-2.6.32.43/arch/x86/kvm/svm.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/arch/x86/kvm/svm.c 2011-04-17 15:56:46.000000000 -0400
-@@ -2483,9 +2483,12 @@ static int handle_exit(struct kvm_run *k
- static void reload_tss(struct kvm_vcpu *vcpu)
- {
++++ linux-2.6.32.43/arch/x86/kvm/svm.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2485,7 +2485,11 @@ static void reload_tss(struct kvm_vcpu *
int cpu = raw_smp_processor_id();
--
+
struct svm_cpu_data *svm_data = per_cpu(svm_data, cpu);
+
+ pax_open_kernel();
@@ -18292,7 +18492,7 @@ diff -urNp linux-2.6.32.43/arch/x86/kvm/svm.c linux-2.6.32.43/arch/x86/kvm/svm.c
load_TR_desc();
}
-@@ -2946,7 +2949,7 @@ static bool svm_gb_page_enable(void)
+@@ -2946,7 +2950,7 @@ static bool svm_gb_page_enable(void)
return true;
}
@@ -18476,6 +18676,21 @@ diff -urNp linux-2.6.32.43/arch/x86/kvm/x86.c linux-2.6.32.43/arch/x86/kvm/x86.c
if (kvm_x86_ops) {
printk(KERN_ERR "kvm: already loaded the other module\n");
+diff -urNp linux-2.6.32.43/arch/x86/lguest/boot.c linux-2.6.32.43/arch/x86/lguest/boot.c
+--- linux-2.6.32.43/arch/x86/lguest/boot.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/arch/x86/lguest/boot.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1172,9 +1172,10 @@ static __init int early_put_chars(u32 vt
+ * Rebooting also tells the Host we're finished, but the RESTART flag tells the
+ * Launcher to reboot us.
+ */
+-static void lguest_restart(char *reason)
++static __noreturn void lguest_restart(char *reason)
+ {
+ kvm_hypercall2(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART);
++ BUG();
+ }
+
+ /*G:050
diff -urNp linux-2.6.32.43/arch/x86/lib/atomic64_32.c linux-2.6.32.43/arch/x86/lib/atomic64_32.c
--- linux-2.6.32.43/arch/x86/lib/atomic64_32.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/arch/x86/lib/atomic64_32.c 2011-05-04 17:56:28.000000000 -0400
@@ -23776,6 +23991,18 @@ diff -urNp linux-2.6.32.43/block/scsi_ioctl.c linux-2.6.32.43/block/scsi_ioctl.c
if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
goto error;
+diff -urNp linux-2.6.32.43/crypto/cryptd.c linux-2.6.32.43/crypto/cryptd.c
+--- linux-2.6.32.43/crypto/cryptd.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/crypto/cryptd.c 2011-08-05 20:33:55.000000000 -0400
+@@ -214,7 +214,7 @@ static int cryptd_blkcipher_enqueue(stru
+ struct cryptd_queue *queue;
+
+ queue = cryptd_get_queue(crypto_ablkcipher_tfm(tfm));
+- rctx->complete = req->base.complete;
++ *(void **)&rctx->complete = req->base.complete;
+ req->base.complete = complete;
+
+ return cryptd_enqueue_request(queue, &req->base);
diff -urNp linux-2.6.32.43/crypto/gf128mul.c linux-2.6.32.43/crypto/gf128mul.c
--- linux-2.6.32.43/crypto/gf128mul.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/crypto/gf128mul.c 2011-07-06 19:53:33.000000000 -0400
@@ -24252,7 +24479,7 @@ diff -urNp linux-2.6.32.43/drivers/ata/libata-acpi.c linux-2.6.32.43/drivers/ata
};
diff -urNp linux-2.6.32.43/drivers/ata/libata-core.c linux-2.6.32.43/drivers/ata/libata-core.c
--- linux-2.6.32.43/drivers/ata/libata-core.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/ata/libata-core.c 2011-04-23 12:56:10.000000000 -0400
++++ linux-2.6.32.43/drivers/ata/libata-core.c 2011-08-05 20:33:55.000000000 -0400
@@ -4954,7 +4954,7 @@ void ata_qc_free(struct ata_queued_cmd *
struct ata_port *ap;
unsigned int tag;
@@ -24293,7 +24520,7 @@ diff -urNp linux-2.6.32.43/drivers/ata/libata-core.c linux-2.6.32.43/drivers/ata
*pp = NULL;
- ops->inherits = NULL;
-+ ((struct ata_port_operations *)ops)->inherits = NULL;
++ *(struct ata_port_operations **)&ops->inherits = NULL;
+ pax_close_kernel();
spin_unlock(&lock);
@@ -26798,7 +27025,7 @@ diff -urNp linux-2.6.32.43/drivers/base/sys.c linux-2.6.32.43/drivers/base/sys.c
};
diff -urNp linux-2.6.32.43/drivers/block/cciss.c linux-2.6.32.43/drivers/block/cciss.c
--- linux-2.6.32.43/drivers/block/cciss.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/block/cciss.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/block/cciss.c 2011-08-05 20:33:55.000000000 -0400
@@ -1011,6 +1011,8 @@ static int cciss_ioctl32_passthru(struct
int err;
u32 cp;
@@ -26808,9 +27035,157 @@ diff -urNp linux-2.6.32.43/drivers/block/cciss.c linux-2.6.32.43/drivers/block/c
err = 0;
err |=
copy_from_user(&arg64.LUN_info, &arg32->LUN_info,
+@@ -2852,7 +2854,7 @@ static unsigned long pollcomplete(int ct
+ /* Wait (up to 20 seconds) for a command to complete */
+
+ for (i = 20 * HZ; i > 0; i--) {
+- done = hba[ctlr]->access.command_completed(hba[ctlr]);
++ done = hba[ctlr]->access->command_completed(hba[ctlr]);
+ if (done == FIFO_EMPTY)
+ schedule_timeout_uninterruptible(1);
+ else
+@@ -2876,7 +2878,7 @@ static int sendcmd_core(ctlr_info_t *h,
+ resend_cmd1:
+
+ /* Disable interrupt on the board. */
+- h->access.set_intr_mask(h, CCISS_INTR_OFF);
++ h->access->set_intr_mask(h, CCISS_INTR_OFF);
+
+ /* Make sure there is room in the command FIFO */
+ /* Actually it should be completely empty at this time */
+@@ -2884,13 +2886,13 @@ resend_cmd1:
+ /* tape side of the driver. */
+ for (i = 200000; i > 0; i--) {
+ /* if fifo isn't full go */
+- if (!(h->access.fifo_full(h)))
++ if (!(h->access->fifo_full(h)))
+ break;
+ udelay(10);
+ printk(KERN_WARNING "cciss cciss%d: SendCmd FIFO full,"
+ " waiting!\n", h->ctlr);
+ }
+- h->access.submit_command(h, c); /* Send the cmd */
++ h->access->submit_command(h, c); /* Send the cmd */
+ do {
+ complete = pollcomplete(h->ctlr);
+
+@@ -3023,7 +3025,7 @@ static void start_io(ctlr_info_t *h)
+ while (!hlist_empty(&h->reqQ)) {
+ c = hlist_entry(h->reqQ.first, CommandList_struct, list);
+ /* can't do anything if fifo is full */
+- if ((h->access.fifo_full(h))) {
++ if ((h->access->fifo_full(h))) {
+ printk(KERN_WARNING "cciss: fifo full\n");
+ break;
+ }
+@@ -3033,7 +3035,7 @@ static void start_io(ctlr_info_t *h)
+ h->Qdepth--;
+
+ /* Tell the controller execute command */
+- h->access.submit_command(h, c);
++ h->access->submit_command(h, c);
+
+ /* Put job onto the completed Q */
+ addQ(&h->cmpQ, c);
+@@ -3393,17 +3395,17 @@ startio:
+
+ static inline unsigned long get_next_completion(ctlr_info_t *h)
+ {
+- return h->access.command_completed(h);
++ return h->access->command_completed(h);
+ }
+
+ static inline int interrupt_pending(ctlr_info_t *h)
+ {
+- return h->access.intr_pending(h);
++ return h->access->intr_pending(h);
+ }
+
+ static inline long interrupt_not_for_us(ctlr_info_t *h)
+ {
+- return (((h->access.intr_pending(h) == 0) ||
++ return (((h->access->intr_pending(h) == 0) ||
+ (h->interrupts_enabled == 0)));
+ }
+
+@@ -3892,7 +3894,7 @@ static int __devinit cciss_pci_init(ctlr
+ */
+ c->max_commands = readl(&(c->cfgtable->CmdsOutMax));
+ c->product_name = products[prod_index].product_name;
+- c->access = *(products[prod_index].access);
++ c->access = products[prod_index].access;
+ c->nr_cmds = c->max_commands - 4;
+ if ((readb(&c->cfgtable->Signature[0]) != 'C') ||
+ (readb(&c->cfgtable->Signature[1]) != 'I') ||
+@@ -4291,7 +4293,7 @@ static int __devinit cciss_init_one(stru
+ }
+
+ /* make sure the board interrupts are off */
+- hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_OFF);
++ hba[i]->access->set_intr_mask(hba[i], CCISS_INTR_OFF);
+ if (request_irq(hba[i]->intr[SIMPLE_MODE_INT], do_cciss_intr,
+ IRQF_DISABLED | IRQF_SHARED, hba[i]->devname, hba[i])) {
+ printk(KERN_ERR "cciss: Unable to get irq %d for %s\n",
+@@ -4341,7 +4343,7 @@ static int __devinit cciss_init_one(stru
+ cciss_scsi_setup(i);
+
+ /* Turn the interrupts on so we can service requests */
+- hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON);
++ hba[i]->access->set_intr_mask(hba[i], CCISS_INTR_ON);
+
+ /* Get the firmware version */
+ inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
+diff -urNp linux-2.6.32.43/drivers/block/cciss.h linux-2.6.32.43/drivers/block/cciss.h
+--- linux-2.6.32.43/drivers/block/cciss.h 2011-04-17 17:00:52.000000000 -0400
++++ linux-2.6.32.43/drivers/block/cciss.h 2011-08-05 20:33:55.000000000 -0400
+@@ -90,7 +90,7 @@ struct ctlr_info
+ // information about each logical volume
+ drive_info_struct *drv[CISS_MAX_LUN];
+
+- struct access_method access;
++ struct access_method *access;
+
+ /* queue and queue Info */
+ struct hlist_head reqQ;
diff -urNp linux-2.6.32.43/drivers/block/cpqarray.c linux-2.6.32.43/drivers/block/cpqarray.c
--- linux-2.6.32.43/drivers/block/cpqarray.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/block/cpqarray.c 2011-05-16 21:46:57.000000000 -0400
++++ linux-2.6.32.43/drivers/block/cpqarray.c 2011-08-05 20:33:55.000000000 -0400
+@@ -402,7 +402,7 @@ static int __init cpqarray_register_ctlr
+ if (register_blkdev(COMPAQ_SMART2_MAJOR+i, hba[i]->devname)) {
+ goto Enomem4;
+ }
+- hba[i]->access.set_intr_mask(hba[i], 0);
++ hba[i]->access->set_intr_mask(hba[i], 0);
+ if (request_irq(hba[i]->intr, do_ida_intr,
+ IRQF_DISABLED|IRQF_SHARED, hba[i]->devname, hba[i]))
+ {
+@@ -460,7 +460,7 @@ static int __init cpqarray_register_ctlr
+ add_timer(&hba[i]->timer);
+
+ /* Enable IRQ now that spinlock and rate limit timer are set up */
+- hba[i]->access.set_intr_mask(hba[i], FIFO_NOT_EMPTY);
++ hba[i]->access->set_intr_mask(hba[i], FIFO_NOT_EMPTY);
+
+ for(j=0; j<NWD; j++) {
+ struct gendisk *disk = ida_gendisk[i][j];
+@@ -695,7 +695,7 @@ DBGINFO(
+ for(i=0; i<NR_PRODUCTS; i++) {
+ if (board_id == products[i].board_id) {
+ c->product_name = products[i].product_name;
+- c->access = *(products[i].access);
++ c->access = products[i].access;
+ break;
+ }
+ }
+@@ -793,7 +793,7 @@ static int __init cpqarray_eisa_detect(v
+ hba[ctlr]->intr = intr;
+ sprintf(hba[ctlr]->devname, "ida%d", nr_ctlr);
+ hba[ctlr]->product_name = products[j].product_name;
+- hba[ctlr]->access = *(products[j].access);
++ hba[ctlr]->access = products[j].access;
+ hba[ctlr]->ctlr = ctlr;
+ hba[ctlr]->board_id = board_id;
+ hba[ctlr]->pci_dev = NULL; /* not PCI */
@@ -896,6 +896,8 @@ static void do_ida_request(struct reques
struct scatterlist tmp_sg[SG_MAX];
int i, dir, seg;
@@ -26820,6 +27195,98 @@ diff -urNp linux-2.6.32.43/drivers/block/cpqarray.c linux-2.6.32.43/drivers/bloc
if (blk_queue_plugged(q))
goto startio;
+@@ -968,7 +970,7 @@ static void start_io(ctlr_info_t *h)
+
+ while((c = h->reqQ) != NULL) {
+ /* Can't do anything if we're busy */
+- if (h->access.fifo_full(h) == 0)
++ if (h->access->fifo_full(h) == 0)
+ return;
+
+ /* Get the first entry from the request Q */
+@@ -976,7 +978,7 @@ static void start_io(ctlr_info_t *h)
+ h->Qdepth--;
+
+ /* Tell the controller to do our bidding */
+- h->access.submit_command(h, c);
++ h->access->submit_command(h, c);
+
+ /* Get onto the completion Q */
+ addQ(&h->cmpQ, c);
+@@ -1038,7 +1040,7 @@ static irqreturn_t do_ida_intr(int irq,
+ unsigned long flags;
+ __u32 a,a1;
+
+- istat = h->access.intr_pending(h);
++ istat = h->access->intr_pending(h);
+ /* Is this interrupt for us? */
+ if (istat == 0)
+ return IRQ_NONE;
+@@ -1049,7 +1051,7 @@ static irqreturn_t do_ida_intr(int irq,
+ */
+ spin_lock_irqsave(IDA_LOCK(h->ctlr), flags);
+ if (istat & FIFO_NOT_EMPTY) {
+- while((a = h->access.command_completed(h))) {
++ while((a = h->access->command_completed(h))) {
+ a1 = a; a &= ~3;
+ if ((c = h->cmpQ) == NULL)
+ {
+@@ -1434,11 +1436,11 @@ static int sendcmd(
+ /*
+ * Disable interrupt
+ */
+- info_p->access.set_intr_mask(info_p, 0);
++ info_p->access->set_intr_mask(info_p, 0);
+ /* Make sure there is room in the command FIFO */
+ /* Actually it should be completely empty at this time. */
+ for (i = 200000; i > 0; i--) {
+- temp = info_p->access.fifo_full(info_p);
++ temp = info_p->access->fifo_full(info_p);
+ if (temp != 0) {
+ break;
+ }
+@@ -1451,7 +1453,7 @@ DBG(
+ /*
+ * Send the cmd
+ */
+- info_p->access.submit_command(info_p, c);
++ info_p->access->submit_command(info_p, c);
+ complete = pollcomplete(ctlr);
+
+ pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr,
+@@ -1534,9 +1536,9 @@ static int revalidate_allvol(ctlr_info_t
+ * we check the new geometry. Then turn interrupts back on when
+ * we're done.
+ */
+- host->access.set_intr_mask(host, 0);
++ host->access->set_intr_mask(host, 0);
+ getgeometry(ctlr);
+- host->access.set_intr_mask(host, FIFO_NOT_EMPTY);
++ host->access->set_intr_mask(host, FIFO_NOT_EMPTY);
+
+ for(i=0; i<NWD; i++) {
+ struct gendisk *disk = ida_gendisk[ctlr][i];
+@@ -1576,7 +1578,7 @@ static int pollcomplete(int ctlr)
+ /* Wait (up to 2 seconds) for a command to complete */
+
+ for (i = 200000; i > 0; i--) {
+- done = hba[ctlr]->access.command_completed(hba[ctlr]);
++ done = hba[ctlr]->access->command_completed(hba[ctlr]);
+ if (done == 0) {
+ udelay(10); /* a short fixed delay */
+ } else
+diff -urNp linux-2.6.32.43/drivers/block/cpqarray.h linux-2.6.32.43/drivers/block/cpqarray.h
+--- linux-2.6.32.43/drivers/block/cpqarray.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/block/cpqarray.h 2011-08-05 20:33:55.000000000 -0400
+@@ -99,7 +99,7 @@ struct ctlr_info {
+ drv_info_t drv[NWD];
+ struct proc_dir_entry *proc;
+
+- struct access_method access;
++ struct access_method *access;
+
+ cmdlist_t *reqQ;
+ cmdlist_t *cmpQ;
diff -urNp linux-2.6.32.43/drivers/block/DAC960.c linux-2.6.32.43/drivers/block/DAC960.c
--- linux-2.6.32.43/drivers/block/DAC960.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/block/DAC960.c 2011-05-16 21:46:57.000000000 -0400
@@ -27645,37 +28112,19 @@ diff -urNp linux-2.6.32.43/drivers/char/pcmcia/ipwireless/tty.c linux-2.6.32.43/
ttyj->channel_idx);
diff -urNp linux-2.6.32.43/drivers/char/pty.c linux-2.6.32.43/drivers/char/pty.c
--- linux-2.6.32.43/drivers/char/pty.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/char/pty.c 2011-04-17 15:56:46.000000000 -0400
-@@ -682,7 +682,18 @@ static int ptmx_open(struct inode *inode
- return ret;
- }
-
--static struct file_operations ptmx_fops;
-+static const struct file_operations ptmx_fops = {
-+ .llseek = no_llseek,
-+ .read = tty_read,
-+ .write = tty_write,
-+ .poll = tty_poll,
-+ .unlocked_ioctl = tty_ioctl,
-+ .compat_ioctl = tty_compat_ioctl,
-+ .open = ptmx_open,
-+ .release = tty_release,
-+ .fasync = tty_fasync,
-+};
-+
-
- static void __init unix98_pty_init(void)
- {
-@@ -736,9 +747,6 @@ static void __init unix98_pty_init(void)
++++ linux-2.6.32.43/drivers/char/pty.c 2011-08-05 20:33:55.000000000 -0400
+@@ -736,8 +736,10 @@ static void __init unix98_pty_init(void)
register_sysctl_table(pty_root_table);
/* Now create the /dev/ptmx special device */
-- tty_default_fops(&ptmx_fops);
++ pax_open_kernel();
+ tty_default_fops(&ptmx_fops);
- ptmx_fops.open = ptmx_open;
--
++ *(void **)&ptmx_fops.open = ptmx_open;
++ pax_close_kernel();
+
cdev_init(&ptmx_cdev, &ptmx_fops);
if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
- register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0)
diff -urNp linux-2.6.32.43/drivers/char/random.c linux-2.6.32.43/drivers/char/random.c
--- linux-2.6.32.43/drivers/char/random.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/char/random.c 2011-04-17 15:56:46.000000000 -0400
@@ -27851,113 +28300,8 @@ diff -urNp linux-2.6.32.43/drivers/char/tpm/tpm.c linux-2.6.32.43/drivers/char/t
"attempting to read the PUBEK");
diff -urNp linux-2.6.32.43/drivers/char/tty_io.c linux-2.6.32.43/drivers/char/tty_io.c
--- linux-2.6.32.43/drivers/char/tty_io.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/char/tty_io.c 2011-04-17 15:56:46.000000000 -0400
-@@ -136,21 +136,10 @@ LIST_HEAD(tty_drivers); /* linked list
- DEFINE_MUTEX(tty_mutex);
- EXPORT_SYMBOL(tty_mutex);
-
--static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
--static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
- ssize_t redirected_tty_write(struct file *, const char __user *,
- size_t, loff_t *);
--static unsigned int tty_poll(struct file *, poll_table *);
- static int tty_open(struct inode *, struct file *);
--static int tty_release(struct inode *, struct file *);
- long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
--#ifdef CONFIG_COMPAT
--static long tty_compat_ioctl(struct file *file, unsigned int cmd,
-- unsigned long arg);
--#else
--#define tty_compat_ioctl NULL
--#endif
--static int tty_fasync(int fd, struct file *filp, int on);
- static void release_tty(struct tty_struct *tty, int idx);
- static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
- static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
-@@ -870,7 +859,7 @@ EXPORT_SYMBOL(start_tty);
- * read calls may be outstanding in parallel.
- */
-
--static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
-+ssize_t tty_read(struct file *file, char __user *buf, size_t count,
- loff_t *ppos)
- {
- int i;
-@@ -898,6 +887,8 @@ static ssize_t tty_read(struct file *fil
- return i;
- }
-
-+EXPORT_SYMBOL(tty_read);
-+
- void tty_write_unlock(struct tty_struct *tty)
- {
- mutex_unlock(&tty->atomic_write_lock);
-@@ -1045,7 +1036,7 @@ void tty_write_message(struct tty_struct
- * write method will not be invoked in parallel for each device.
- */
-
--static ssize_t tty_write(struct file *file, const char __user *buf,
-+ssize_t tty_write(struct file *file, const char __user *buf,
- size_t count, loff_t *ppos)
- {
- struct tty_struct *tty;
-@@ -1072,6 +1063,8 @@ static ssize_t tty_write(struct file *fi
- return ret;
- }
-
-+EXPORT_SYMBOL(tty_write);
-+
- ssize_t redirected_tty_write(struct file *file, const char __user *buf,
- size_t count, loff_t *ppos)
- {
-@@ -1867,7 +1860,7 @@ static int tty_open(struct inode *inode,
- * Takes bkl. See tty_release_dev
- */
-
--static int tty_release(struct inode *inode, struct file *filp)
-+int tty_release(struct inode *inode, struct file *filp)
- {
- lock_kernel();
- tty_release_dev(filp);
-@@ -1875,6 +1868,8 @@ static int tty_release(struct inode *ino
- return 0;
- }
-
-+EXPORT_SYMBOL(tty_release);
-+
- /**
- * tty_poll - check tty status
- * @filp: file being polled
-@@ -1887,7 +1882,7 @@ static int tty_release(struct inode *ino
- * may be re-entered freely by other callers.
- */
-
--static unsigned int tty_poll(struct file *filp, poll_table *wait)
-+unsigned int tty_poll(struct file *filp, poll_table *wait)
- {
- struct tty_struct *tty;
- struct tty_ldisc *ld;
-@@ -1904,7 +1899,9 @@ static unsigned int tty_poll(struct file
- return ret;
- }
-
--static int tty_fasync(int fd, struct file *filp, int on)
-+EXPORT_SYMBOL(tty_poll);
-+
-+int tty_fasync(int fd, struct file *filp, int on)
- {
- struct tty_struct *tty;
- unsigned long flags;
-@@ -1948,6 +1945,8 @@ out:
- return retval;
- }
-
-+EXPORT_SYMBOL(tty_fasync);
-+
- /**
- * tiocsti - fake input character
- * @tty: tty to fake input into
-@@ -2582,8 +2581,10 @@ long tty_ioctl(struct file *file, unsign
++++ linux-2.6.32.43/drivers/char/tty_io.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2582,8 +2582,10 @@ long tty_ioctl(struct file *file, unsign
return retval;
}
@@ -27969,7 +28313,7 @@ diff -urNp linux-2.6.32.43/drivers/char/tty_io.c linux-2.6.32.43/drivers/char/tt
unsigned long arg)
{
struct inode *inode = file->f_dentry->d_inode;
-@@ -2607,6 +2608,8 @@ static long tty_compat_ioctl(struct file
+@@ -2607,6 +2609,8 @@ static long tty_compat_ioctl(struct file
return retval;
}
@@ -27978,18 +28322,15 @@ diff -urNp linux-2.6.32.43/drivers/char/tty_io.c linux-2.6.32.43/drivers/char/tt
#endif
/*
-@@ -3050,11 +3053,6 @@ struct tty_struct *get_current_tty(void)
- }
- EXPORT_SYMBOL_GPL(get_current_tty);
+@@ -3052,7 +3056,7 @@ EXPORT_SYMBOL_GPL(get_current_tty);
--void tty_default_fops(struct file_operations *fops)
--{
+ void tty_default_fops(struct file_operations *fops)
+ {
- *fops = tty_fops;
--}
--
++ memcpy((void *)fops, &tty_fops, sizeof(tty_fops));
+ }
+
/*
- * Initialize the console device. This is called *early*, so
- * we can't necessarily depend on lots of kernel help here.
diff -urNp linux-2.6.32.43/drivers/char/tty_ldisc.c linux-2.6.32.43/drivers/char/tty_ldisc.c
--- linux-2.6.32.43/drivers/char/tty_ldisc.c 2011-07-13 17:23:04.000000000 -0400
+++ linux-2.6.32.43/drivers/char/tty_ldisc.c 2011-07-13 17:23:18.000000000 -0400
@@ -28040,15 +28381,37 @@ diff -urNp linux-2.6.32.43/drivers/char/tty_ldisc.c linux-2.6.32.43/drivers/char
}
diff -urNp linux-2.6.32.43/drivers/char/virtio_console.c linux-2.6.32.43/drivers/char/virtio_console.c
--- linux-2.6.32.43/drivers/char/virtio_console.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/char/virtio_console.c 2011-04-17 15:56:46.000000000 -0400
-@@ -44,6 +44,7 @@ static unsigned int in_len;
- static char *in, *inbuf;
++++ linux-2.6.32.43/drivers/char/virtio_console.c 2011-08-05 20:33:55.000000000 -0400
+@@ -133,7 +133,9 @@ static int get_chars(u32 vtermno, char *
+ * virtqueue, so we let the drivers do some boutique early-output thing. */
+ int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int))
+ {
+- virtio_cons.put_chars = put_chars;
++ pax_open_kernel();
++ *(void **)&virtio_cons.put_chars = put_chars;
++ pax_close_kernel();
+ return hvc_instantiate(0, 0, &virtio_cons);
+ }
- /* The operations for our console. */
-+/* cannot be const */
- static struct hv_ops virtio_cons;
+@@ -213,11 +215,13 @@ static int __devinit virtcons_probe(stru
+ out_vq = vqs[1];
+
+ /* Start using the new console output. */
+- virtio_cons.get_chars = get_chars;
+- virtio_cons.put_chars = put_chars;
+- virtio_cons.notifier_add = notifier_add_vio;
+- virtio_cons.notifier_del = notifier_del_vio;
+- virtio_cons.notifier_hangup = notifier_del_vio;
++ pax_open_kernel();
++ *(void **)&virtio_cons.get_chars = get_chars;
++ *(void **)&virtio_cons.put_chars = put_chars;
++ *(void **)&virtio_cons.notifier_add = notifier_add_vio;
++ *(void **)&virtio_cons.notifier_del = notifier_del_vio;
++ *(void **)&virtio_cons.notifier_hangup = notifier_del_vio;
++ pax_close_kernel();
- /* The hvc device */
+ /* The first argument of hvc_alloc() is the virtual console number, so
+ * we use zero. The second argument is the parameter for the
diff -urNp linux-2.6.32.43/drivers/char/vt.c linux-2.6.32.43/drivers/char/vt.c
--- linux-2.6.32.43/drivers/char/vt.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/char/vt.c 2011-04-17 15:56:46.000000000 -0400
@@ -28352,6 +28715,22 @@ diff -urNp linux-2.6.32.43/drivers/edac/edac_pci_sysfs.c linux-2.6.32.43/drivers
panic("EDAC: PCI Parity Error");
}
}
+diff -urNp linux-2.6.32.43/drivers/firewire/core-card.c linux-2.6.32.43/drivers/firewire/core-card.c
+--- linux-2.6.32.43/drivers/firewire/core-card.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/firewire/core-card.c 2011-08-05 20:33:55.000000000 -0400
+@@ -569,8 +569,10 @@ void fw_core_remove_card(struct fw_card
+ mutex_unlock(&card_mutex);
+
+ /* Switch off most of the card driver interface. */
+- dummy_driver.free_iso_context = card->driver->free_iso_context;
+- dummy_driver.stop_iso = card->driver->stop_iso;
++ pax_open_kernel();
++ *(void **)&dummy_driver.free_iso_context = card->driver->free_iso_context;
++ *(void **)&dummy_driver.stop_iso = card->driver->stop_iso;
++ pax_close_kernel();
+ card->driver = &dummy_driver;
+
+ fw_destroy_nodes(card);
diff -urNp linux-2.6.32.43/drivers/firewire/core-cdev.c linux-2.6.32.43/drivers/firewire/core-cdev.c
--- linux-2.6.32.43/drivers/firewire/core-cdev.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/firewire/core-cdev.c 2011-04-17 15:56:46.000000000 -0400
@@ -28930,7 +29309,16 @@ diff -urNp linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.c linux-2.6.32.43/drive
.close = drm_gem_vm_close,
diff -urNp linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.h linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.h
--- linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.h 2011-05-04 17:56:28.000000000 -0400
++++ linux-2.6.32.43/drivers/gpu/drm/i915/i915_drv.h 2011-08-05 20:33:55.000000000 -0400
+@@ -168,7 +168,7 @@ struct drm_i915_display_funcs {
+ /* display clock increase/decrease */
+ /* pll clock increase/decrease */
+ /* clock gating init */
+-};
++} __no_const;
+
+ typedef struct drm_i915_private {
+ struct drm_device *dev;
@@ -197,7 +197,7 @@ typedef struct drm_i915_private {
int page_flipping;
@@ -29046,6 +29434,20 @@ diff -urNp linux-2.6.32.43/drivers/gpu/drm/i915/i915_irq.c linux-2.6.32.43/drive
INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
INIT_WORK(&dev_priv->error_work, i915_error_work_func);
+diff -urNp linux-2.6.32.43/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.32.43/drivers/gpu/drm/i915/intel_sdvo.c
+--- linux-2.6.32.43/drivers/gpu/drm/i915/intel_sdvo.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/gpu/drm/i915/intel_sdvo.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2795,7 +2795,9 @@ bool intel_sdvo_init(struct drm_device *
+ sdvo_priv->slave_addr = intel_sdvo_get_slave_addr(dev, output_device);
+
+ /* Save the bit-banging i2c functionality for use by the DDC wrapper */
+- intel_sdvo_i2c_bit_algo.functionality = intel_output->i2c_bus->algo->functionality;
++ pax_open_kernel();
++ *(void **)&intel_sdvo_i2c_bit_algo.functionality = intel_output->i2c_bus->algo->functionality;
++ pax_close_kernel();
+
+ /* Read the regs to test if we can talk to the device */
+ for (i = 0; i < 0x40; i++) {
diff -urNp linux-2.6.32.43/drivers/gpu/drm/mga/mga_drv.h linux-2.6.32.43/drivers/gpu/drm/mga/mga_drv.h
--- linux-2.6.32.43/drivers/gpu/drm/mga/mga_drv.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/gpu/drm/mga/mga_drv.h 2011-05-04 17:56:28.000000000 -0400
@@ -29284,7 +29686,7 @@ diff -urNp linux-2.6.32.43/drivers/gpu/drm/radeon/radeon_fence.c linux-2.6.32.43
INIT_LIST_HEAD(&rdev->fence_drv.signaled);
diff -urNp linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h
--- linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h 2011-05-04 17:56:28.000000000 -0400
++++ linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h 2011-08-05 20:33:55.000000000 -0400
@@ -149,7 +149,7 @@ int radeon_pm_init(struct radeon_device
*/
struct radeon_fence_driver {
@@ -29294,6 +29696,15 @@ diff -urNp linux-2.6.32.43/drivers/gpu/drm/radeon/radeon.h linux-2.6.32.43/drive
uint32_t last_seq;
unsigned long count_timeout;
wait_queue_head_t queue;
+@@ -640,7 +640,7 @@ struct radeon_asic {
+ uint32_t offset, uint32_t obj_size);
+ int (*clear_surface_reg)(struct radeon_device *rdev, int reg);
+ void (*bandwidth_update)(struct radeon_device *rdev);
+-};
++} __no_const;
+
+ /*
+ * Asic structures
diff -urNp linux-2.6.32.43/drivers/gpu/drm/radeon/radeon_ioc32.c linux-2.6.32.43/drivers/gpu/drm/radeon/radeon_ioc32.c
--- linux-2.6.32.43/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/gpu/drm/radeon/radeon_ioc32.c 2011-04-23 13:57:24.000000000 -0400
@@ -29761,6 +30172,75 @@ diff -urNp linux-2.6.32.43/drivers/hwmon/w83791d.c linux-2.6.32.43/drivers/hwmon
static struct w83791d_data *w83791d_update_device(struct device *dev);
#ifdef DEBUG
+diff -urNp linux-2.6.32.43/drivers/i2c/busses/i2c-amd756-s4882.c linux-2.6.32.43/drivers/i2c/busses/i2c-amd756-s4882.c
+--- linux-2.6.32.43/drivers/i2c/busses/i2c-amd756-s4882.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/i2c/busses/i2c-amd756-s4882.c 2011-08-05 20:33:55.000000000 -0400
+@@ -189,23 +189,23 @@ static int __init amd756_s4882_init(void
+ }
+
+ /* Fill in the new structures */
+- s4882_algo[0] = *(amd756_smbus.algo);
+- s4882_algo[0].smbus_xfer = amd756_access_virt0;
++ memcpy((void *)&s4882_algo[0], amd756_smbus.algo, sizeof(s4882_algo[0]));
++ *(void **)&s4882_algo[0].smbus_xfer = amd756_access_virt0;
+ s4882_adapter[0] = amd756_smbus;
+ s4882_adapter[0].algo = s4882_algo;
+- s4882_adapter[0].dev.parent = amd756_smbus.dev.parent;
++ *(void **)&s4882_adapter[0].dev.parent = amd756_smbus.dev.parent;
+ for (i = 1; i < 5; i++) {
+- s4882_algo[i] = *(amd756_smbus.algo);
++ memcpy((void *)&s4882_algo[i], amd756_smbus.algo, sizeof(s4882_algo[i]));
+ s4882_adapter[i] = amd756_smbus;
+ snprintf(s4882_adapter[i].name, sizeof(s4882_adapter[i].name),
+ "SMBus 8111 adapter (CPU%d)", i-1);
+ s4882_adapter[i].algo = s4882_algo+i;
+ s4882_adapter[i].dev.parent = amd756_smbus.dev.parent;
+ }
+- s4882_algo[1].smbus_xfer = amd756_access_virt1;
+- s4882_algo[2].smbus_xfer = amd756_access_virt2;
+- s4882_algo[3].smbus_xfer = amd756_access_virt3;
+- s4882_algo[4].smbus_xfer = amd756_access_virt4;
++ *(void **)&s4882_algo[1].smbus_xfer = amd756_access_virt1;
++ *(void **)&s4882_algo[2].smbus_xfer = amd756_access_virt2;
++ *(void **)&s4882_algo[3].smbus_xfer = amd756_access_virt3;
++ *(void **)&s4882_algo[4].smbus_xfer = amd756_access_virt4;
+
+ /* Register virtual adapters */
+ for (i = 0; i < 5; i++) {
+diff -urNp linux-2.6.32.43/drivers/i2c/busses/i2c-nforce2-s4985.c linux-2.6.32.43/drivers/i2c/busses/i2c-nforce2-s4985.c
+--- linux-2.6.32.43/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/i2c/busses/i2c-nforce2-s4985.c 2011-08-05 20:33:55.000000000 -0400
+@@ -184,23 +184,23 @@ static int __init nforce2_s4985_init(voi
+ }
+
+ /* Fill in the new structures */
+- s4985_algo[0] = *(nforce2_smbus->algo);
+- s4985_algo[0].smbus_xfer = nforce2_access_virt0;
++ memcpy((void *)&s4985_algo[0], nforce2_smbus->algo, sizeof(s4985_algo[0]));
++ *(void **)&s4985_algo[0].smbus_xfer = nforce2_access_virt0;
+ s4985_adapter[0] = *nforce2_smbus;
+ s4985_adapter[0].algo = s4985_algo;
+ s4985_adapter[0].dev.parent = nforce2_smbus->dev.parent;
+ for (i = 1; i < 5; i++) {
+- s4985_algo[i] = *(nforce2_smbus->algo);
++ memcpy((void *)&s4985_algo[i], nforce2_smbus->algo, sizeof(s4985_algo[i]));
+ s4985_adapter[i] = *nforce2_smbus;
+ snprintf(s4985_adapter[i].name, sizeof(s4985_adapter[i].name),
+ "SMBus nForce2 adapter (CPU%d)", i - 1);
+ s4985_adapter[i].algo = s4985_algo + i;
+ s4985_adapter[i].dev.parent = nforce2_smbus->dev.parent;
+ }
+- s4985_algo[1].smbus_xfer = nforce2_access_virt1;
+- s4985_algo[2].smbus_xfer = nforce2_access_virt2;
+- s4985_algo[3].smbus_xfer = nforce2_access_virt3;
+- s4985_algo[4].smbus_xfer = nforce2_access_virt4;
++ *(void **)&s4985_algo[1].smbus_xfer = nforce2_access_virt1;
++ *(void **)&s4985_algo[2].smbus_xfer = nforce2_access_virt2;
++ *(void **)&s4985_algo[3].smbus_xfer = nforce2_access_virt3;
++ *(void **)&s4985_algo[4].smbus_xfer = nforce2_access_virt4;
+
+ /* Register virtual adapters */
+ for (i = 0; i < 5; i++) {
diff -urNp linux-2.6.32.43/drivers/ide/ide-cd.c linux-2.6.32.43/drivers/ide/ide-cd.c
--- linux-2.6.32.43/drivers/ide/ide-cd.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/ide/ide-cd.c 2011-04-17 15:56:46.000000000 -0400
@@ -30753,6 +31233,18 @@ diff -urNp linux-2.6.32.43/drivers/isdn/hardware/eicon/divasfunc.c linux-2.6.32.
DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
for (x = 0; x < MAX_DESCRIPTORS; x++) {
+diff -urNp linux-2.6.32.43/drivers/isdn/hardware/eicon/divasync.h linux-2.6.32.43/drivers/isdn/hardware/eicon/divasync.h
+--- linux-2.6.32.43/drivers/isdn/hardware/eicon/divasync.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/isdn/hardware/eicon/divasync.h 2011-08-05 20:33:55.000000000 -0400
+@@ -146,7 +146,7 @@ typedef struct _diva_didd_add_adapter {
+ } diva_didd_add_adapter_t;
+ typedef struct _diva_didd_remove_adapter {
+ IDI_CALL p_request;
+-} diva_didd_remove_adapter_t;
++} __no_const diva_didd_remove_adapter_t;
+ typedef struct _diva_didd_read_adapter_array {
+ void * buffer;
+ dword length;
diff -urNp linux-2.6.32.43/drivers/isdn/hardware/eicon/idifunc.c linux-2.6.32.43/drivers/isdn/hardware/eicon/idifunc.c
--- linux-2.6.32.43/drivers/isdn/hardware/eicon/idifunc.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/isdn/hardware/eicon/idifunc.c 2011-05-16 21:46:57.000000000 -0400
@@ -30816,6 +31308,18 @@ diff -urNp linux-2.6.32.43/drivers/isdn/hardware/eicon/mntfunc.c linux-2.6.32.43
DIVA_DIDD_Read(DIDD_Table, sizeof(DIDD_Table));
for (x = 0; x < MAX_DESCRIPTORS; x++) {
+diff -urNp linux-2.6.32.43/drivers/isdn/hardware/eicon/xdi_adapter.h linux-2.6.32.43/drivers/isdn/hardware/eicon/xdi_adapter.h
+--- linux-2.6.32.43/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/isdn/hardware/eicon/xdi_adapter.h 2011-08-05 20:33:55.000000000 -0400
+@@ -44,7 +44,7 @@ typedef struct _xdi_mbox_t {
+ typedef struct _diva_os_idi_adapter_interface {
+ diva_init_card_proc_t cleanup_adapter_proc;
+ diva_cmd_card_proc_t cmd_proc;
+-} diva_os_idi_adapter_interface_t;
++} __no_const diva_os_idi_adapter_interface_t;
+
+ typedef struct _diva_os_xdi_adapter {
+ struct list_head link;
diff -urNp linux-2.6.32.43/drivers/isdn/i4l/isdn_common.c linux-2.6.32.43/drivers/isdn/i4l/isdn_common.c
--- linux-2.6.32.43/drivers/isdn/i4l/isdn_common.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/isdn/i4l/isdn_common.c 2011-05-16 21:46:57.000000000 -0400
@@ -31533,6 +32037,18 @@ diff -urNp linux-2.6.32.43/drivers/md/raid5.c linux-2.6.32.43/drivers/md/raid5.c
chunk_offset = sector_div(new_sector, sectors_per_chunk);
stripe = new_sector;
+diff -urNp linux-2.6.32.43/drivers/media/common/saa7146_fops.c linux-2.6.32.43/drivers/media/common/saa7146_fops.c
+--- linux-2.6.32.43/drivers/media/common/saa7146_fops.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/common/saa7146_fops.c 2011-08-05 20:33:55.000000000 -0400
+@@ -458,7 +458,7 @@ int saa7146_vv_init(struct saa7146_dev*
+ ERR(("out of memory. aborting.\n"));
+ return -ENOMEM;
+ }
+- ext_vv->ops = saa7146_video_ioctl_ops;
++ memcpy((void *)&ext_vv->ops, &saa7146_video_ioctl_ops, sizeof(saa7146_video_ioctl_ops));
+ ext_vv->core_ops = &saa7146_video_ioctl_ops;
+
+ DEB_EE(("dev:%p\n",dev));
diff -urNp linux-2.6.32.43/drivers/media/common/saa7146_hlp.c linux-2.6.32.43/drivers/media/common/saa7146_hlp.c
--- linux-2.6.32.43/drivers/media/common/saa7146_hlp.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/common/saa7146_hlp.c 2011-05-16 21:46:57.000000000 -0400
@@ -31566,17 +32082,44 @@ diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6
dprintk("%s\n", __func__);
/* Incoming packet has a 2 byte header. hdr[0] = slot_id, hdr[1] = connection_id */
+diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-core/dvb_demux.h linux-2.6.32.43/drivers/media/dvb/dvb-core/dvb_demux.h
+--- linux-2.6.32.43/drivers/media/dvb/dvb-core/dvb_demux.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/dvb-core/dvb_demux.h 2011-08-05 20:33:55.000000000 -0400
+@@ -71,7 +71,7 @@ struct dvb_demux_feed {
+ union {
+ dmx_ts_cb ts;
+ dmx_section_cb sec;
+- } cb;
++ } __no_const cb;
+
+ struct dvb_demux *demux;
+ void *priv;
diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-core/dvbdev.c linux-2.6.32.43/drivers/media/dvb/dvb-core/dvbdev.c
--- linux-2.6.32.43/drivers/media/dvb/dvb-core/dvbdev.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/media/dvb/dvb-core/dvbdev.c 2011-04-17 15:56:46.000000000 -0400
-@@ -191,6 +191,7 @@ int dvb_register_device(struct dvb_adapt
- const struct dvb_device *template, void *priv, int type)
- {
- struct dvb_device *dvbdev;
-+ /* cannot be const */
- struct file_operations *dvbdevfops;
- struct device *clsdev;
- int minor;
++++ linux-2.6.32.43/drivers/media/dvb/dvb-core/dvbdev.c 2011-08-05 20:33:55.000000000 -0400
+@@ -228,8 +228,8 @@ int dvb_register_device(struct dvb_adapt
+ dvbdev->fops = dvbdevfops;
+ init_waitqueue_head (&dvbdev->wait_queue);
+
+- memcpy(dvbdevfops, template->fops, sizeof(struct file_operations));
+- dvbdevfops->owner = adap->module;
++ memcpy((void *)dvbdevfops, template->fops, sizeof(struct file_operations));
++ *(void **)&dvbdevfops->owner = adap->module;
+
+ list_add_tail (&dvbdev->list_head, &adap->device_list);
+
+diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-usb/cxusb.c linux-2.6.32.43/drivers/media/dvb/dvb-usb/cxusb.c
+--- linux-2.6.32.43/drivers/media/dvb/dvb-usb/cxusb.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/dvb-usb/cxusb.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1040,7 +1040,7 @@ static struct dib0070_config dib7070p_di
+ struct dib0700_adapter_state {
+ int (*set_param_save) (struct dvb_frontend *,
+ struct dvb_frontend_parameters *);
+-};
++} __no_const;
+
+ static int dib7070_set_param_override(struct dvb_frontend *fe,
+ struct dvb_frontend_parameters *fep)
diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_core.c
--- linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_core.c 2011-05-16 21:46:57.000000000 -0400
@@ -31589,6 +32132,30 @@ diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_core.c linux-2.6.32
while ((ret = dvb_usb_get_hexline(fw, &hx, &pos)) > 0) {
deb_fwdata("writing to address 0x%08x (buffer: 0x%02x %02x)\n",hx.addr, hx.len, hx.chk);
+diff -urNp linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_devices.c
+--- linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-05-10 22:12:01.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/dvb-usb/dib0700_devices.c 2011-08-05 20:33:55.000000000 -0400
+@@ -28,7 +28,7 @@ MODULE_PARM_DESC(force_lna_activation, "
+
+ struct dib0700_adapter_state {
+ int (*set_param_save) (struct dvb_frontend *, struct dvb_frontend_parameters *);
+-};
++} __no_const;
+
+ /* Hauppauge Nova-T 500 (aka Bristol)
+ * has a LNA on GPIO0 which is enabled by setting 1 */
+diff -urNp linux-2.6.32.43/drivers/media/dvb/frontends/dib3000.h linux-2.6.32.43/drivers/media/dvb/frontends/dib3000.h
+--- linux-2.6.32.43/drivers/media/dvb/frontends/dib3000.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/frontends/dib3000.h 2011-08-05 20:33:55.000000000 -0400
+@@ -39,7 +39,7 @@ struct dib_fe_xfer_ops
+ int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
+ int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
+ int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
+-};
++} __no_const;
+
+ #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
+ extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
diff -urNp linux-2.6.32.43/drivers/media/dvb/frontends/or51211.c linux-2.6.32.43/drivers/media/dvb/frontends/or51211.c
--- linux-2.6.32.43/drivers/media/dvb/frontends/or51211.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/dvb/frontends/or51211.c 2011-05-16 21:46:57.000000000 -0400
@@ -31601,6 +32168,56 @@ diff -urNp linux-2.6.32.43/drivers/media/dvb/frontends/or51211.c linux-2.6.32.43
dprintk("Firmware is %zd bytes\n",fw->size);
/* Get eprom data */
+diff -urNp linux-2.6.32.43/drivers/media/dvb/ttpci/av7110_v4l.c linux-2.6.32.43/drivers/media/dvb/ttpci/av7110_v4l.c
+--- linux-2.6.32.43/drivers/media/dvb/ttpci/av7110_v4l.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/ttpci/av7110_v4l.c 2011-08-05 20:33:55.000000000 -0400
+@@ -796,18 +796,18 @@ int av7110_init_v4l(struct av7110 *av711
+ ERR(("cannot init capture device. skipping.\n"));
+ return -ENODEV;
+ }
+- vv_data->ops.vidioc_enum_input = vidioc_enum_input;
+- vv_data->ops.vidioc_g_input = vidioc_g_input;
+- vv_data->ops.vidioc_s_input = vidioc_s_input;
+- vv_data->ops.vidioc_g_tuner = vidioc_g_tuner;
+- vv_data->ops.vidioc_s_tuner = vidioc_s_tuner;
+- vv_data->ops.vidioc_g_frequency = vidioc_g_frequency;
+- vv_data->ops.vidioc_s_frequency = vidioc_s_frequency;
+- vv_data->ops.vidioc_g_audio = vidioc_g_audio;
+- vv_data->ops.vidioc_s_audio = vidioc_s_audio;
+- vv_data->ops.vidioc_g_sliced_vbi_cap = vidioc_g_sliced_vbi_cap;
+- vv_data->ops.vidioc_g_fmt_sliced_vbi_out = vidioc_g_fmt_sliced_vbi_out;
+- vv_data->ops.vidioc_s_fmt_sliced_vbi_out = vidioc_s_fmt_sliced_vbi_out;
++ *(void **)&vv_data->ops.vidioc_enum_input = vidioc_enum_input;
++ *(void **)&vv_data->ops.vidioc_g_input = vidioc_g_input;
++ *(void **)&vv_data->ops.vidioc_s_input = vidioc_s_input;
++ *(void **)&vv_data->ops.vidioc_g_tuner = vidioc_g_tuner;
++ *(void **)&vv_data->ops.vidioc_s_tuner = vidioc_s_tuner;
++ *(void **)&vv_data->ops.vidioc_g_frequency = vidioc_g_frequency;
++ *(void **)&vv_data->ops.vidioc_s_frequency = vidioc_s_frequency;
++ *(void **)&vv_data->ops.vidioc_g_audio = vidioc_g_audio;
++ *(void **)&vv_data->ops.vidioc_s_audio = vidioc_s_audio;
++ *(void **)&vv_data->ops.vidioc_g_sliced_vbi_cap = vidioc_g_sliced_vbi_cap;
++ *(void **)&vv_data->ops.vidioc_g_fmt_sliced_vbi_out = vidioc_g_fmt_sliced_vbi_out;
++ *(void **)&vv_data->ops.vidioc_s_fmt_sliced_vbi_out = vidioc_s_fmt_sliced_vbi_out;
+
+ if (saa7146_register_device(&av7110->v4l_dev, dev, "av7110", VFL_TYPE_GRABBER)) {
+ ERR(("cannot register capture device. skipping.\n"));
+diff -urNp linux-2.6.32.43/drivers/media/dvb/ttpci/budget-av.c linux-2.6.32.43/drivers/media/dvb/ttpci/budget-av.c
+--- linux-2.6.32.43/drivers/media/dvb/ttpci/budget-av.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/dvb/ttpci/budget-av.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1477,9 +1477,9 @@ static int budget_av_attach(struct saa71
+ ERR(("cannot init vv subsystem.\n"));
+ return err;
+ }
+- vv_data.ops.vidioc_enum_input = vidioc_enum_input;
+- vv_data.ops.vidioc_g_input = vidioc_g_input;
+- vv_data.ops.vidioc_s_input = vidioc_s_input;
++ *(void **)&vv_data.ops.vidioc_enum_input = vidioc_enum_input;
++ *(void **)&vv_data.ops.vidioc_g_input = vidioc_g_input;
++ *(void **)&vv_data.ops.vidioc_s_input = vidioc_s_input;
+
+ if ((err = saa7146_register_device(&budget_av->vd, dev, "knc1", VFL_TYPE_GRABBER))) {
+ /* fixme: proper cleanup here */
diff -urNp linux-2.6.32.43/drivers/media/radio/radio-cadet.c linux-2.6.32.43/drivers/media/radio/radio-cadet.c
--- linux-2.6.32.43/drivers/media/radio/radio-cadet.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/radio/radio-cadet.c 2011-04-17 15:56:46.000000000 -0400
@@ -31643,6 +32260,44 @@ diff -urNp linux-2.6.32.43/drivers/media/video/cx18/cx18-driver.c linux-2.6.32.4
if (i >= CX18_MAX_CARDS) {
printk(KERN_ERR "cx18: cannot manage card %d, driver has a "
"limit of 0 - %d\n", i, CX18_MAX_CARDS - 1);
+diff -urNp linux-2.6.32.43/drivers/media/video/hexium_gemini.c linux-2.6.32.43/drivers/media/video/hexium_gemini.c
+--- linux-2.6.32.43/drivers/media/video/hexium_gemini.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/hexium_gemini.c 2011-08-05 20:33:55.000000000 -0400
+@@ -394,12 +394,12 @@ static int hexium_attach(struct saa7146_
+ hexium->cur_input = 0;
+
+ saa7146_vv_init(dev, &vv_data);
+- vv_data.ops.vidioc_queryctrl = vidioc_queryctrl;
+- vv_data.ops.vidioc_g_ctrl = vidioc_g_ctrl;
+- vv_data.ops.vidioc_s_ctrl = vidioc_s_ctrl;
+- vv_data.ops.vidioc_enum_input = vidioc_enum_input;
+- vv_data.ops.vidioc_g_input = vidioc_g_input;
+- vv_data.ops.vidioc_s_input = vidioc_s_input;
++ *(void **)&vv_data.ops.vidioc_queryctrl = vidioc_queryctrl;
++ *(void **)&vv_data.ops.vidioc_g_ctrl = vidioc_g_ctrl;
++ *(void **)&vv_data.ops.vidioc_s_ctrl = vidioc_s_ctrl;
++ *(void **)&vv_data.ops.vidioc_enum_input = vidioc_enum_input;
++ *(void **)&vv_data.ops.vidioc_g_input = vidioc_g_input;
++ *(void **)&vv_data.ops.vidioc_s_input = vidioc_s_input;
+ if (0 != saa7146_register_device(&hexium->video_dev, dev, "hexium gemini", VFL_TYPE_GRABBER)) {
+ printk("hexium_gemini: cannot register capture v4l2 device. skipping.\n");
+ return -1;
+diff -urNp linux-2.6.32.43/drivers/media/video/hexium_orion.c linux-2.6.32.43/drivers/media/video/hexium_orion.c
+--- linux-2.6.32.43/drivers/media/video/hexium_orion.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/hexium_orion.c 2011-08-05 20:33:55.000000000 -0400
+@@ -369,9 +369,9 @@ static int hexium_attach(struct saa7146_
+ DEB_EE((".\n"));
+
+ saa7146_vv_init(dev, &vv_data);
+- vv_data.ops.vidioc_enum_input = vidioc_enum_input;
+- vv_data.ops.vidioc_g_input = vidioc_g_input;
+- vv_data.ops.vidioc_s_input = vidioc_s_input;
++ *(void **)&vv_data.ops.vidioc_enum_input = vidioc_enum_input;
++ *(void **)&vv_data.ops.vidioc_g_input = vidioc_g_input;
++ *(void **)&vv_data.ops.vidioc_s_input = vidioc_s_input;
+ if (0 != saa7146_register_device(&hexium->video_dev, dev, "hexium orion", VFL_TYPE_GRABBER)) {
+ printk("hexium_orion: cannot register capture v4l2 device. skipping.\n");
+ return -1;
diff -urNp linux-2.6.32.43/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.43/drivers/media/video/ivtv/ivtv-driver.c
--- linux-2.6.32.43/drivers/media/video/ivtv/ivtv-driver.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/video/ivtv/ivtv-driver.c 2011-05-04 17:56:28.000000000 -0400
@@ -31655,6 +32310,48 @@ diff -urNp linux-2.6.32.43/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.32.4
/* Parameter declarations */
static int cardtype[IVTV_MAX_CARDS];
+diff -urNp linux-2.6.32.43/drivers/media/video/mxb.c linux-2.6.32.43/drivers/media/video/mxb.c
+--- linux-2.6.32.43/drivers/media/video/mxb.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/mxb.c 2011-08-05 20:33:55.000000000 -0400
+@@ -703,23 +703,23 @@ static int mxb_attach(struct saa7146_dev
+ already did this in "mxb_vl42_probe" */
+
+ saa7146_vv_init(dev, &vv_data);
+- vv_data.ops.vidioc_queryctrl = vidioc_queryctrl;
+- vv_data.ops.vidioc_g_ctrl = vidioc_g_ctrl;
+- vv_data.ops.vidioc_s_ctrl = vidioc_s_ctrl;
+- vv_data.ops.vidioc_enum_input = vidioc_enum_input;
+- vv_data.ops.vidioc_g_input = vidioc_g_input;
+- vv_data.ops.vidioc_s_input = vidioc_s_input;
+- vv_data.ops.vidioc_g_tuner = vidioc_g_tuner;
+- vv_data.ops.vidioc_s_tuner = vidioc_s_tuner;
+- vv_data.ops.vidioc_g_frequency = vidioc_g_frequency;
+- vv_data.ops.vidioc_s_frequency = vidioc_s_frequency;
+- vv_data.ops.vidioc_g_audio = vidioc_g_audio;
+- vv_data.ops.vidioc_s_audio = vidioc_s_audio;
++ *(void **)&vv_data.ops.vidioc_queryctrl = vidioc_queryctrl;
++ *(void **)&vv_data.ops.vidioc_g_ctrl = vidioc_g_ctrl;
++ *(void **)&vv_data.ops.vidioc_s_ctrl = vidioc_s_ctrl;
++ *(void **)&vv_data.ops.vidioc_enum_input = vidioc_enum_input;
++ *(void **)&vv_data.ops.vidioc_g_input = vidioc_g_input;
++ *(void **)&vv_data.ops.vidioc_s_input = vidioc_s_input;
++ *(void **)&vv_data.ops.vidioc_g_tuner = vidioc_g_tuner;
++ *(void **)&vv_data.ops.vidioc_s_tuner = vidioc_s_tuner;
++ *(void **)&vv_data.ops.vidioc_g_frequency = vidioc_g_frequency;
++ *(void **)&vv_data.ops.vidioc_s_frequency = vidioc_s_frequency;
++ *(void **)&vv_data.ops.vidioc_g_audio = vidioc_g_audio;
++ *(void **)&vv_data.ops.vidioc_s_audio = vidioc_s_audio;
+ #ifdef CONFIG_VIDEO_ADV_DEBUG
+- vv_data.ops.vidioc_g_register = vidioc_g_register;
+- vv_data.ops.vidioc_s_register = vidioc_s_register;
++ *(void **)&vv_data.ops.vidioc_g_register = vidioc_g_register;
++ *(void **)&vv_data.ops.vidioc_s_register = vidioc_s_register;
+ #endif
+- vv_data.ops.vidioc_default = vidioc_default;
++ *(void **)&vv_data.ops.vidioc_default = vidioc_default;
+ if (saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_GRABBER)) {
+ ERR(("cannot register capture v4l2 device. skipping.\n"));
+ return -1;
diff -urNp linux-2.6.32.43/drivers/media/video/omap24xxcam.c linux-2.6.32.43/drivers/media/video/omap24xxcam.c
--- linux-2.6.32.43/drivers/media/video/omap24xxcam.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/video/omap24xxcam.c 2011-05-04 17:56:28.000000000 -0400
@@ -31724,9 +32421,37 @@ diff -urNp linux-2.6.32.43/drivers/media/video/saa7164/saa7164-cmd.c linux-2.6.3
while (loop) {
tmComResInfo_t tRsp = { 0, 0, 0, 0, 0, 0 };
+diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/ibmcam.c linux-2.6.32.43/drivers/media/video/usbvideo/ibmcam.c
+--- linux-2.6.32.43/drivers/media/video/usbvideo/ibmcam.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/usbvideo/ibmcam.c 2011-08-05 20:33:55.000000000 -0400
+@@ -3947,15 +3947,15 @@ static struct usb_device_id id_table[] =
+ static int __init ibmcam_init(void)
+ {
+ struct usbvideo_cb cbTbl;
+- memset(&cbTbl, 0, sizeof(cbTbl));
+- cbTbl.probe = ibmcam_probe;
+- cbTbl.setupOnOpen = ibmcam_setup_on_open;
+- cbTbl.videoStart = ibmcam_video_start;
+- cbTbl.videoStop = ibmcam_video_stop;
+- cbTbl.processData = ibmcam_ProcessIsocData;
+- cbTbl.postProcess = usbvideo_DeinterlaceFrame;
+- cbTbl.adjustPicture = ibmcam_adjust_picture;
+- cbTbl.getFPS = ibmcam_calculate_fps;
++ memset((void *)&cbTbl, 0, sizeof(cbTbl));
++ *(void **)&cbTbl.probe = ibmcam_probe;
++ *(void **)&cbTbl.setupOnOpen = ibmcam_setup_on_open;
++ *(void **)&cbTbl.videoStart = ibmcam_video_start;
++ *(void **)&cbTbl.videoStop = ibmcam_video_stop;
++ *(void **)&cbTbl.processData = ibmcam_ProcessIsocData;
++ *(void **)&cbTbl.postProcess = usbvideo_DeinterlaceFrame;
++ *(void **)&cbTbl.adjustPicture = ibmcam_adjust_picture;
++ *(void **)&cbTbl.getFPS = ibmcam_calculate_fps;
+ return usbvideo_register(
+ &cams,
+ MAX_IBMCAM,
diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c
--- linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c 2011-08-05 20:33:55.000000000 -0400
@@ -225,7 +225,7 @@ static void konicawc_register_input(stru
int error;
@@ -31736,6 +32461,33 @@ diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/konicawc.c linux-2.6.32.
cam->input = input_dev = input_allocate_device();
if (!input_dev) {
+@@ -935,16 +935,16 @@ static int __init konicawc_init(void)
+ struct usbvideo_cb cbTbl;
+ printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
+ DRIVER_DESC "\n");
+- memset(&cbTbl, 0, sizeof(cbTbl));
+- cbTbl.probe = konicawc_probe;
+- cbTbl.setupOnOpen = konicawc_setup_on_open;
+- cbTbl.processData = konicawc_process_isoc;
+- cbTbl.getFPS = konicawc_calculate_fps;
+- cbTbl.setVideoMode = konicawc_set_video_mode;
+- cbTbl.startDataPump = konicawc_start_data;
+- cbTbl.stopDataPump = konicawc_stop_data;
+- cbTbl.adjustPicture = konicawc_adjust_picture;
+- cbTbl.userFree = konicawc_free_uvd;
++ memset((void * )&cbTbl, 0, sizeof(cbTbl));
++ *(void **)&cbTbl.probe = konicawc_probe;
++ *(void **)&cbTbl.setupOnOpen = konicawc_setup_on_open;
++ *(void **)&cbTbl.processData = konicawc_process_isoc;
++ *(void **)&cbTbl.getFPS = konicawc_calculate_fps;
++ *(void **)&cbTbl.setVideoMode = konicawc_set_video_mode;
++ *(void **)&cbTbl.startDataPump = konicawc_start_data;
++ *(void **)&cbTbl.stopDataPump = konicawc_stop_data;
++ *(void **)&cbTbl.adjustPicture = konicawc_adjust_picture;
++ *(void **)&cbTbl.userFree = konicawc_free_uvd;
+ return usbvideo_register(
+ &cams,
+ MAX_CAMERAS,
diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/quickcam_messenger.c linux-2.6.32.43/drivers/media/video/usbvideo/quickcam_messenger.c
--- linux-2.6.32.43/drivers/media/video/usbvideo/quickcam_messenger.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/video/usbvideo/quickcam_messenger.c 2011-04-17 15:56:46.000000000 -0400
@@ -31748,6 +32500,56 @@ diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/quickcam_messenger.c lin
cam->input = input_dev = input_allocate_device();
if (!input_dev) {
+diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/ultracam.c linux-2.6.32.43/drivers/media/video/usbvideo/ultracam.c
+--- linux-2.6.32.43/drivers/media/video/usbvideo/ultracam.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/usbvideo/ultracam.c 2011-08-05 20:33:55.000000000 -0400
+@@ -655,14 +655,14 @@ static int __init ultracam_init(void)
+ {
+ struct usbvideo_cb cbTbl;
+ memset(&cbTbl, 0, sizeof(cbTbl));
+- cbTbl.probe = ultracam_probe;
+- cbTbl.setupOnOpen = ultracam_setup_on_open;
+- cbTbl.videoStart = ultracam_video_start;
+- cbTbl.videoStop = ultracam_video_stop;
+- cbTbl.processData = ultracam_ProcessIsocData;
+- cbTbl.postProcess = usbvideo_DeinterlaceFrame;
+- cbTbl.adjustPicture = ultracam_adjust_picture;
+- cbTbl.getFPS = ultracam_calculate_fps;
++ *(void **)&cbTbl.probe = ultracam_probe;
++ *(void **)&cbTbl.setupOnOpen = ultracam_setup_on_open;
++ *(void **)&cbTbl.videoStart = ultracam_video_start;
++ *(void **)&cbTbl.videoStop = ultracam_video_stop;
++ *(void **)&cbTbl.processData = ultracam_ProcessIsocData;
++ *(void **)&cbTbl.postProcess = usbvideo_DeinterlaceFrame;
++ *(void **)&cbTbl.adjustPicture = ultracam_adjust_picture;
++ *(void **)&cbTbl.getFPS = ultracam_calculate_fps;
+ return usbvideo_register(
+ &cams,
+ MAX_CAMERAS,
+diff -urNp linux-2.6.32.43/drivers/media/video/usbvideo/usbvideo.c linux-2.6.32.43/drivers/media/video/usbvideo/usbvideo.c
+--- linux-2.6.32.43/drivers/media/video/usbvideo/usbvideo.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/media/video/usbvideo/usbvideo.c 2011-08-05 20:33:55.000000000 -0400
+@@ -697,15 +697,15 @@ int usbvideo_register(
+ __func__, cams, base_size, num_cams);
+
+ /* Copy callbacks, apply defaults for those that are not set */
+- memmove(&cams->cb, cbTbl, sizeof(cams->cb));
++ memmove((void *)&cams->cb, cbTbl, sizeof(cams->cb));
+ if (cams->cb.getFrame == NULL)
+- cams->cb.getFrame = usbvideo_GetFrame;
++ *(void **)&cams->cb.getFrame = usbvideo_GetFrame;
+ if (cams->cb.disconnect == NULL)
+- cams->cb.disconnect = usbvideo_Disconnect;
++ *(void **)&cams->cb.disconnect = usbvideo_Disconnect;
+ if (cams->cb.startDataPump == NULL)
+- cams->cb.startDataPump = usbvideo_StartDataPump;
++ *(void **)&cams->cb.startDataPump = usbvideo_StartDataPump;
+ if (cams->cb.stopDataPump == NULL)
+- cams->cb.stopDataPump = usbvideo_StopDataPump;
++ *(void **)&cams->cb.stopDataPump = usbvideo_StopDataPump;
+
+ cams->num_cameras = num_cams;
+ cams->cam = (struct uvd *) &cams[1];
diff -urNp linux-2.6.32.43/drivers/media/video/usbvision/usbvision-core.c linux-2.6.32.43/drivers/media/video/usbvision/usbvision-core.c
--- linux-2.6.32.43/drivers/media/video/usbvision/usbvision-core.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/media/video/usbvision/usbvision-core.c 2011-05-16 21:46:57.000000000 -0400
@@ -32270,6 +33072,88 @@ diff -urNp linux-2.6.32.43/drivers/misc/sgi-gru/grutables.h linux-2.6.32.43/driv
} while (0)
#ifdef CONFIG_SGI_GRU_DEBUG
+diff -urNp linux-2.6.32.43/drivers/misc/sgi-xp/xpc.h linux-2.6.32.43/drivers/misc/sgi-xp/xpc.h
+--- linux-2.6.32.43/drivers/misc/sgi-xp/xpc.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/misc/sgi-xp/xpc.h 2011-08-05 20:33:55.000000000 -0400
+@@ -876,7 +876,7 @@ extern struct xpc_registration xpc_regis
+ /* found in xpc_main.c */
+ extern struct device *xpc_part;
+ extern struct device *xpc_chan;
+-extern struct xpc_arch_operations xpc_arch_ops;
++extern const struct xpc_arch_operations xpc_arch_ops;
+ extern int xpc_disengage_timelimit;
+ extern int xpc_disengage_timedout;
+ extern int xpc_activate_IRQ_rcvd;
+diff -urNp linux-2.6.32.43/drivers/misc/sgi-xp/xpc_main.c linux-2.6.32.43/drivers/misc/sgi-xp/xpc_main.c
+--- linux-2.6.32.43/drivers/misc/sgi-xp/xpc_main.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/misc/sgi-xp/xpc_main.c 2011-08-05 20:33:55.000000000 -0400
+@@ -169,7 +169,7 @@ static struct notifier_block xpc_die_not
+ .notifier_call = xpc_system_die,
+ };
+
+-struct xpc_arch_operations xpc_arch_ops;
++const struct xpc_arch_operations xpc_arch_ops;
+
+ /*
+ * Timer function to enforce the timelimit on the partition disengage.
+diff -urNp linux-2.6.32.43/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.32.43/drivers/misc/sgi-xp/xpc_sn2.c
+--- linux-2.6.32.43/drivers/misc/sgi-xp/xpc_sn2.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/misc/sgi-xp/xpc_sn2.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2350,7 +2350,7 @@ xpc_received_payload_sn2(struct xpc_chan
+ xpc_acknowledge_msgs_sn2(ch, get, msg->flags);
+ }
+
+-static struct xpc_arch_operations xpc_arch_ops_sn2 = {
++static const struct xpc_arch_operations xpc_arch_ops_sn2 = {
+ .setup_partitions = xpc_setup_partitions_sn2,
+ .teardown_partitions = xpc_teardown_partitions_sn2,
+ .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_sn2,
+@@ -2413,7 +2413,9 @@ xpc_init_sn2(void)
+ int ret;
+ size_t buf_size;
+
+- xpc_arch_ops = xpc_arch_ops_sn2;
++ pax_open_kernel();
++ memcpy((void *)&xpc_arch_ops, &xpc_arch_ops_sn2, sizeof(xpc_arch_ops_sn2));
++ pax_close_kernel();
+
+ if (offsetof(struct xpc_msg_sn2, payload) > XPC_MSG_HDR_MAX_SIZE) {
+ dev_err(xpc_part, "header portion of struct xpc_msg_sn2 is "
+diff -urNp linux-2.6.32.43/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.32.43/drivers/misc/sgi-xp/xpc_uv.c
+--- linux-2.6.32.43/drivers/misc/sgi-xp/xpc_uv.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/misc/sgi-xp/xpc_uv.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1669,7 +1669,7 @@ xpc_received_payload_uv(struct xpc_chann
+ XPC_DEACTIVATE_PARTITION(&xpc_partitions[ch->partid], ret);
+ }
+
+-static struct xpc_arch_operations xpc_arch_ops_uv = {
++static const struct xpc_arch_operations xpc_arch_ops_uv = {
+ .setup_partitions = xpc_setup_partitions_uv,
+ .teardown_partitions = xpc_teardown_partitions_uv,
+ .process_activate_IRQ_rcvd = xpc_process_activate_IRQ_rcvd_uv,
+@@ -1729,7 +1729,9 @@ static struct xpc_arch_operations xpc_ar
+ int
+ xpc_init_uv(void)
+ {
+- xpc_arch_ops = xpc_arch_ops_uv;
++ pax_open_kernel();
++ memcpy((void *)&xpc_arch_ops, &xpc_arch_ops_uv, sizeof(xpc_arch_ops_uv));
++ pax_close_kernel();
+
+ if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) {
+ dev_err(xpc_part, "xpc_notify_mq_msghdr_uv is larger than %d\n",
+diff -urNp linux-2.6.32.43/drivers/misc/sgi-xp/xp.h linux-2.6.32.43/drivers/misc/sgi-xp/xp.h
+--- linux-2.6.32.43/drivers/misc/sgi-xp/xp.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/misc/sgi-xp/xp.h 2011-08-05 20:33:55.000000000 -0400
+@@ -289,7 +289,7 @@ struct xpc_interface {
+ xpc_notify_func, void *);
+ void (*received) (short, int, void *);
+ enum xp_retval (*partid_to_nasids) (short, void *);
+-};
++} __no_const;
+
+ extern struct xpc_interface xpc_interface;
+
diff -urNp linux-2.6.32.43/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.32.43/drivers/mtd/chips/cfi_cmdset_0001.c
--- linux-2.6.32.43/drivers/mtd/chips/cfi_cmdset_0001.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/mtd/chips/cfi_cmdset_0001.c 2011-05-16 21:46:57.000000000 -0400
@@ -32518,6 +33402,18 @@ diff -urNp linux-2.6.32.43/drivers/net/bnx2.c linux-2.6.32.43/drivers/net/bnx2.c
if ((rc = bnx2_nvram_read(bp, 0, data, 4)) != 0)
goto test_nvram_done;
+diff -urNp linux-2.6.32.43/drivers/net/cxgb3/l2t.h linux-2.6.32.43/drivers/net/cxgb3/l2t.h
+--- linux-2.6.32.43/drivers/net/cxgb3/l2t.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/cxgb3/l2t.h 2011-08-05 20:33:55.000000000 -0400
+@@ -86,7 +86,7 @@ typedef void (*arp_failure_handler_func)
+ */
+ struct l2t_skb_cb {
+ arp_failure_handler_func arp_failure_handler;
+-};
++} __no_const;
+
+ #define L2T_SKB_CB(skb) ((struct l2t_skb_cb *)(skb)->cb)
+
diff -urNp linux-2.6.32.43/drivers/net/cxgb3/t3_hw.c linux-2.6.32.43/drivers/net/cxgb3/t3_hw.c
--- linux-2.6.32.43/drivers/net/cxgb3/t3_hw.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/cxgb3/t3_hw.c 2011-05-16 21:46:57.000000000 -0400
@@ -32532,16 +33428,57 @@ diff -urNp linux-2.6.32.43/drivers/net/cxgb3/t3_hw.c linux-2.6.32.43/drivers/net
* it at 0.
diff -urNp linux-2.6.32.43/drivers/net/e1000e/82571.c linux-2.6.32.43/drivers/net/e1000e/82571.c
--- linux-2.6.32.43/drivers/net/e1000e/82571.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/net/e1000e/82571.c 2011-04-17 15:56:46.000000000 -0400
-@@ -212,6 +212,7 @@ static s32 e1000_init_mac_params_82571(s
- {
- struct e1000_hw *hw = &adapter->hw;
- struct e1000_mac_info *mac = &hw->mac;
-+ /* cannot be const */
- struct e1000_mac_operations *func = &mac->ops;
- u32 swsm = 0;
- u32 swsm2 = 0;
-@@ -1656,7 +1657,7 @@ static void e1000_clear_hw_cntrs_82571(s
++++ linux-2.6.32.43/drivers/net/e1000e/82571.c 2011-08-05 20:33:55.000000000 -0400
+@@ -245,22 +245,22 @@ static s32 e1000_init_mac_params_82571(s
+ /* check for link */
+ switch (hw->phy.media_type) {
+ case e1000_media_type_copper:
+- func->setup_physical_interface = e1000_setup_copper_link_82571;
+- func->check_for_link = e1000e_check_for_copper_link;
+- func->get_link_up_info = e1000e_get_speed_and_duplex_copper;
++ *(void **)&func->setup_physical_interface = e1000_setup_copper_link_82571;
++ *(void **)&func->check_for_link = e1000e_check_for_copper_link;
++ *(void **)&func->get_link_up_info = e1000e_get_speed_and_duplex_copper;
+ break;
+ case e1000_media_type_fiber:
+- func->setup_physical_interface =
++ *(void **)&func->setup_physical_interface =
+ e1000_setup_fiber_serdes_link_82571;
+- func->check_for_link = e1000e_check_for_fiber_link;
+- func->get_link_up_info =
++ *(void **)&func->check_for_link = e1000e_check_for_fiber_link;
++ *(void **)&func->get_link_up_info =
+ e1000e_get_speed_and_duplex_fiber_serdes;
+ break;
+ case e1000_media_type_internal_serdes:
+- func->setup_physical_interface =
++ *(void **)&func->setup_physical_interface =
+ e1000_setup_fiber_serdes_link_82571;
+- func->check_for_link = e1000_check_for_serdes_link_82571;
+- func->get_link_up_info =
++ *(void **)&func->check_for_link = e1000_check_for_serdes_link_82571;
++ *(void **)&func->get_link_up_info =
+ e1000e_get_speed_and_duplex_fiber_serdes;
+ break;
+ default:
+@@ -271,12 +271,12 @@ static s32 e1000_init_mac_params_82571(s
+ switch (hw->mac.type) {
+ case e1000_82574:
+ case e1000_82583:
+- func->check_mng_mode = e1000_check_mng_mode_82574;
+- func->led_on = e1000_led_on_82574;
++ *(void **)&func->check_mng_mode = e1000_check_mng_mode_82574;
++ *(void **)&func->led_on = e1000_led_on_82574;
+ break;
+ default:
+- func->check_mng_mode = e1000e_check_mng_mode_generic;
+- func->led_on = e1000e_led_on_generic;
++ *(void **)&func->check_mng_mode = e1000e_check_mng_mode_generic;
++ *(void **)&func->led_on = e1000e_led_on_generic;
+ break;
+ }
+
+@@ -1656,7 +1656,7 @@ static void e1000_clear_hw_cntrs_82571(s
temp = er32(ICRXDMTC);
}
@@ -32550,7 +33487,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/82571.c linux-2.6.32.43/drivers/ne
/* .check_mng_mode: mac type dependent */
/* .check_for_link: media type dependent */
.id_led_init = e1000e_id_led_init,
-@@ -1674,7 +1675,7 @@ static struct e1000_mac_operations e8257
+@@ -1674,7 +1674,7 @@ static struct e1000_mac_operations e8257
.setup_led = e1000e_setup_led_generic,
};
@@ -32559,7 +33496,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/82571.c linux-2.6.32.43/drivers/ne
.acquire_phy = e1000_get_hw_semaphore_82571,
.check_reset_block = e1000e_check_reset_block_generic,
.commit_phy = NULL,
-@@ -1691,7 +1692,7 @@ static struct e1000_phy_operations e82_p
+@@ -1691,7 +1691,7 @@ static struct e1000_phy_operations e82_p
.cfg_on_link_up = NULL,
};
@@ -32568,7 +33505,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/82571.c linux-2.6.32.43/drivers/ne
.acquire_phy = e1000_get_hw_semaphore_82571,
.check_reset_block = e1000e_check_reset_block_generic,
.commit_phy = e1000e_phy_sw_reset,
-@@ -1708,7 +1709,7 @@ static struct e1000_phy_operations e82_p
+@@ -1708,7 +1708,7 @@ static struct e1000_phy_operations e82_p
.cfg_on_link_up = NULL,
};
@@ -32577,7 +33514,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/82571.c linux-2.6.32.43/drivers/ne
.acquire_phy = e1000_get_hw_semaphore_82571,
.check_reset_block = e1000e_check_reset_block_generic,
.commit_phy = e1000e_phy_sw_reset,
-@@ -1725,7 +1726,7 @@ static struct e1000_phy_operations e82_p
+@@ -1725,7 +1725,7 @@ static struct e1000_phy_operations e82_p
.cfg_on_link_up = NULL,
};
@@ -32604,16 +33541,31 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/e1000.h linux-2.6.32.43/drivers/ne
/* hardware capability, feature, and workaround flags */
diff -urNp linux-2.6.32.43/drivers/net/e1000e/es2lan.c linux-2.6.32.43/drivers/net/e1000e/es2lan.c
--- linux-2.6.32.43/drivers/net/e1000e/es2lan.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/net/e1000e/es2lan.c 2011-04-17 15:56:46.000000000 -0400
-@@ -207,6 +207,7 @@ static s32 e1000_init_mac_params_80003es
- {
- struct e1000_hw *hw = &adapter->hw;
- struct e1000_mac_info *mac = &hw->mac;
-+ /* cannot be const */
- struct e1000_mac_operations *func = &mac->ops;
-
- /* Set media type */
-@@ -1365,7 +1366,7 @@ static void e1000_clear_hw_cntrs_80003es
++++ linux-2.6.32.43/drivers/net/e1000e/es2lan.c 2011-08-05 20:33:55.000000000 -0400
+@@ -229,16 +229,16 @@ static s32 e1000_init_mac_params_80003es
+ /* check for link */
+ switch (hw->phy.media_type) {
+ case e1000_media_type_copper:
+- func->setup_physical_interface = e1000_setup_copper_link_80003es2lan;
+- func->check_for_link = e1000e_check_for_copper_link;
++ *(void **)&func->setup_physical_interface = e1000_setup_copper_link_80003es2lan;
++ *(void **)&func->check_for_link = e1000e_check_for_copper_link;
+ break;
+ case e1000_media_type_fiber:
+- func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
+- func->check_for_link = e1000e_check_for_fiber_link;
++ *(void **)&func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
++ *(void **)&func->check_for_link = e1000e_check_for_fiber_link;
+ break;
+ case e1000_media_type_internal_serdes:
+- func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
+- func->check_for_link = e1000e_check_for_serdes_link;
++ *(void **)&func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
++ *(void **)&func->check_for_link = e1000e_check_for_serdes_link;
+ break;
+ default:
+ return -E1000_ERR_CONFIG;
+@@ -1365,7 +1365,7 @@ static void e1000_clear_hw_cntrs_80003es
temp = er32(ICRXDMTC);
}
@@ -32622,7 +33574,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/es2lan.c linux-2.6.32.43/drivers/n
.id_led_init = e1000e_id_led_init,
.check_mng_mode = e1000e_check_mng_mode_generic,
/* check_for_link dependent on media type */
-@@ -1383,7 +1384,7 @@ static struct e1000_mac_operations es2_m
+@@ -1383,7 +1383,7 @@ static struct e1000_mac_operations es2_m
.setup_led = e1000e_setup_led_generic,
};
@@ -32631,7 +33583,7 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/es2lan.c linux-2.6.32.43/drivers/n
.acquire_phy = e1000_acquire_phy_80003es2lan,
.check_reset_block = e1000e_check_reset_block_generic,
.commit_phy = e1000e_phy_sw_reset,
-@@ -1400,7 +1401,7 @@ static struct e1000_phy_operations es2_p
+@@ -1400,7 +1400,7 @@ static struct e1000_phy_operations es2_p
.cfg_on_link_up = e1000_cfg_on_link_up_80003es2lan,
};
@@ -32704,7 +33656,125 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/hw.h linux-2.6.32.43/drivers/net/e
struct e1000_mac_info {
diff -urNp linux-2.6.32.43/drivers/net/e1000e/ich8lan.c linux-2.6.32.43/drivers/net/e1000e/ich8lan.c
--- linux-2.6.32.43/drivers/net/e1000e/ich8lan.c 2011-05-10 22:12:01.000000000 -0400
-+++ linux-2.6.32.43/drivers/net/e1000e/ich8lan.c 2011-05-10 22:12:32.000000000 -0400
++++ linux-2.6.32.43/drivers/net/e1000e/ich8lan.c 2011-08-05 20:33:55.000000000 -0400
+@@ -265,13 +265,13 @@ static s32 e1000_init_phy_params_pchlan(
+ phy->addr = 1;
+ phy->reset_delay_us = 100;
+
+- phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan;
+- phy->ops.read_phy_reg = e1000_read_phy_reg_hv;
+- phy->ops.read_phy_reg_locked = e1000_read_phy_reg_hv_locked;
+- phy->ops.set_d0_lplu_state = e1000_set_lplu_state_pchlan;
+- phy->ops.set_d3_lplu_state = e1000_set_lplu_state_pchlan;
+- phy->ops.write_phy_reg = e1000_write_phy_reg_hv;
+- phy->ops.write_phy_reg_locked = e1000_write_phy_reg_hv_locked;
++ *(void **)&phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan;
++ *(void **)&phy->ops.read_phy_reg = e1000_read_phy_reg_hv;
++ *(void **)&phy->ops.read_phy_reg_locked = e1000_read_phy_reg_hv_locked;
++ *(void **)&phy->ops.set_d0_lplu_state = e1000_set_lplu_state_pchlan;
++ *(void **)&phy->ops.set_d3_lplu_state = e1000_set_lplu_state_pchlan;
++ *(void **)&phy->ops.write_phy_reg = e1000_write_phy_reg_hv;
++ *(void **)&phy->ops.write_phy_reg_locked = e1000_write_phy_reg_hv_locked;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+
+ /*
+@@ -289,12 +289,12 @@ static s32 e1000_init_phy_params_pchlan(
+ phy->type = e1000e_get_phy_type_from_id(phy->id);
+
+ if (phy->type == e1000_phy_82577) {
+- phy->ops.check_polarity = e1000_check_polarity_82577;
+- phy->ops.force_speed_duplex =
++ *(void **)&phy->ops.check_polarity = e1000_check_polarity_82577;
++ *(void **)&phy->ops.force_speed_duplex =
+ e1000_phy_force_speed_duplex_82577;
+- phy->ops.get_cable_length = e1000_get_cable_length_82577;
+- phy->ops.get_phy_info = e1000_get_phy_info_82577;
+- phy->ops.commit_phy = e1000e_phy_sw_reset;
++ *(void **)&phy->ops.get_cable_length = e1000_get_cable_length_82577;
++ *(void **)&phy->ops.get_phy_info = e1000_get_phy_info_82577;
++ *(void **)&phy->ops.commit_phy = e1000e_phy_sw_reset;
+ }
+
+ out:
+@@ -322,8 +322,8 @@ static s32 e1000_init_phy_params_ich8lan
+ */
+ ret_val = e1000e_determine_phy_address(hw);
+ if (ret_val) {
+- hw->phy.ops.write_phy_reg = e1000e_write_phy_reg_bm;
+- hw->phy.ops.read_phy_reg = e1000e_read_phy_reg_bm;
++ *(void **)&hw->phy.ops.write_phy_reg = e1000e_write_phy_reg_bm;
++ *(void **)&hw->phy.ops.read_phy_reg = e1000e_read_phy_reg_bm;
+ ret_val = e1000e_determine_phy_address(hw);
+ if (ret_val)
+ return ret_val;
+@@ -343,8 +343,8 @@ static s32 e1000_init_phy_params_ich8lan
+ case IGP03E1000_E_PHY_ID:
+ phy->type = e1000_phy_igp_3;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+- phy->ops.read_phy_reg_locked = e1000e_read_phy_reg_igp_locked;
+- phy->ops.write_phy_reg_locked = e1000e_write_phy_reg_igp_locked;
++ *(void **)&phy->ops.read_phy_reg_locked = e1000e_read_phy_reg_igp_locked;
++ *(void **)&phy->ops.write_phy_reg_locked = e1000e_write_phy_reg_igp_locked;
+ break;
+ case IFE_E_PHY_ID:
+ case IFE_PLUS_E_PHY_ID:
+@@ -355,16 +355,16 @@ static s32 e1000_init_phy_params_ich8lan
+ case BME1000_E_PHY_ID:
+ phy->type = e1000_phy_bm;
+ phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
+- hw->phy.ops.read_phy_reg = e1000e_read_phy_reg_bm;
+- hw->phy.ops.write_phy_reg = e1000e_write_phy_reg_bm;
+- hw->phy.ops.commit_phy = e1000e_phy_sw_reset;
++ *(void **)&hw->phy.ops.read_phy_reg = e1000e_read_phy_reg_bm;
++ *(void **)&hw->phy.ops.write_phy_reg = e1000e_write_phy_reg_bm;
++ *(void **)&hw->phy.ops.commit_phy = e1000e_phy_sw_reset;
+ break;
+ default:
+ return -E1000_ERR_PHY;
+ break;
+ }
+
+- phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan;
++ *(void **)&phy->ops.check_polarity = e1000_check_polarity_ife_ich8lan;
+
+ return 0;
+ }
+@@ -455,25 +455,25 @@ static s32 e1000_init_mac_params_ich8lan
+ case e1000_ich9lan:
+ case e1000_ich10lan:
+ /* ID LED init */
+- mac->ops.id_led_init = e1000e_id_led_init;
++ *(void **)&mac->ops.id_led_init = e1000e_id_led_init;
+ /* setup LED */
+- mac->ops.setup_led = e1000e_setup_led_generic;
++ *(void **)&mac->ops.setup_led = e1000e_setup_led_generic;
+ /* cleanup LED */
+- mac->ops.cleanup_led = e1000_cleanup_led_ich8lan;
++ *(void **)&mac->ops.cleanup_led = e1000_cleanup_led_ich8lan;
+ /* turn on/off LED */
+- mac->ops.led_on = e1000_led_on_ich8lan;
+- mac->ops.led_off = e1000_led_off_ich8lan;
++ *(void **)&mac->ops.led_on = e1000_led_on_ich8lan;
++ *(void **)&mac->ops.led_off = e1000_led_off_ich8lan;
+ break;
+ case e1000_pchlan:
+ /* ID LED init */
+- mac->ops.id_led_init = e1000_id_led_init_pchlan;
++ *(void **)&mac->ops.id_led_init = e1000_id_led_init_pchlan;
+ /* setup LED */
+- mac->ops.setup_led = e1000_setup_led_pchlan;
++ *(void **)&mac->ops.setup_led = e1000_setup_led_pchlan;
+ /* cleanup LED */
+- mac->ops.cleanup_led = e1000_cleanup_led_pchlan;
++ *(void **)&mac->ops.cleanup_led = e1000_cleanup_led_pchlan;
+ /* turn on/off LED */
+- mac->ops.led_on = e1000_led_on_pchlan;
+- mac->ops.led_off = e1000_led_off_pchlan;
++ *(void **)&mac->ops.led_on = e1000_led_on_pchlan;
++ *(void **)&mac->ops.led_off = e1000_led_off_pchlan;
+ break;
+ default:
+ break;
@@ -3463,7 +3463,7 @@ static void e1000_clear_hw_cntrs_ich8lan
}
}
@@ -32732,6 +33802,22 @@ diff -urNp linux-2.6.32.43/drivers/net/e1000e/ich8lan.c linux-2.6.32.43/drivers/
.acquire_nvm = e1000_acquire_nvm_ich8lan,
.read_nvm = e1000_read_nvm_ich8lan,
.release_nvm = e1000_release_nvm_ich8lan,
+diff -urNp linux-2.6.32.43/drivers/net/e1000e/netdev.c linux-2.6.32.43/drivers/net/e1000e/netdev.c
+--- linux-2.6.32.43/drivers/net/e1000e/netdev.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/e1000e/netdev.c 2011-08-05 20:33:55.000000000 -0400
+@@ -5071,9 +5071,9 @@ static int __devinit e1000_probe(struct
+
+ err = -EIO;
+
+- memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
+- memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
+- memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
++ memcpy((void *)&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
++ memcpy((void *)&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
++ memcpy((void *)&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
+
+ err = ei->get_variants(adapter);
+ if (err)
diff -urNp linux-2.6.32.43/drivers/net/hamradio/6pack.c linux-2.6.32.43/drivers/net/hamradio/6pack.c
--- linux-2.6.32.43/drivers/net/hamradio/6pack.c 2011-07-13 17:23:04.000000000 -0400
+++ linux-2.6.32.43/drivers/net/hamradio/6pack.c 2011-07-13 17:23:18.000000000 -0400
@@ -32758,7 +33844,62 @@ diff -urNp linux-2.6.32.43/drivers/net/ibmveth.c linux-2.6.32.43/drivers/net/ibm
};
diff -urNp linux-2.6.32.43/drivers/net/igb/e1000_82575.c linux-2.6.32.43/drivers/net/igb/e1000_82575.c
--- linux-2.6.32.43/drivers/net/igb/e1000_82575.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/net/igb/e1000_82575.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/net/igb/e1000_82575.c 2011-08-05 20:33:55.000000000 -0400
+@@ -135,7 +135,7 @@ static s32 igb_get_invariants_82575(stru
+ ? true : false;
+
+ /* physical interface link setup */
+- mac->ops.setup_physical_interface =
++ *(void **)&mac->ops.setup_physical_interface =
+ (hw->phy.media_type == e1000_media_type_copper)
+ ? igb_setup_copper_link_82575
+ : igb_setup_serdes_link_82575;
+@@ -191,13 +191,13 @@ static s32 igb_get_invariants_82575(stru
+
+ /* PHY function pointers */
+ if (igb_sgmii_active_82575(hw)) {
+- phy->ops.reset = igb_phy_hw_reset_sgmii_82575;
+- phy->ops.read_reg = igb_read_phy_reg_sgmii_82575;
+- phy->ops.write_reg = igb_write_phy_reg_sgmii_82575;
++ *(void **)&phy->ops.reset = igb_phy_hw_reset_sgmii_82575;
++ *(void **)&phy->ops.read_reg = igb_read_phy_reg_sgmii_82575;
++ *(void **)&phy->ops.write_reg = igb_write_phy_reg_sgmii_82575;
+ } else {
+- phy->ops.reset = igb_phy_hw_reset;
+- phy->ops.read_reg = igb_read_phy_reg_igp;
+- phy->ops.write_reg = igb_write_phy_reg_igp;
++ *(void **)&phy->ops.reset = igb_phy_hw_reset;
++ *(void **)&phy->ops.read_reg = igb_read_phy_reg_igp;
++ *(void **)&phy->ops.write_reg = igb_write_phy_reg_igp;
+ }
+
+ /* set lan id */
+@@ -213,17 +213,17 @@ static s32 igb_get_invariants_82575(stru
+ switch (phy->id) {
+ case M88E1111_I_PHY_ID:
+ phy->type = e1000_phy_m88;
+- phy->ops.get_phy_info = igb_get_phy_info_m88;
+- phy->ops.get_cable_length = igb_get_cable_length_m88;
+- phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88;
++ *(void **)&phy->ops.get_phy_info = igb_get_phy_info_m88;
++ *(void **)&phy->ops.get_cable_length = igb_get_cable_length_m88;
++ *(void **)&phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_m88;
+ break;
+ case IGP03E1000_E_PHY_ID:
+ phy->type = e1000_phy_igp_3;
+- phy->ops.get_phy_info = igb_get_phy_info_igp;
+- phy->ops.get_cable_length = igb_get_cable_length_igp_2;
+- phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_igp;
+- phy->ops.set_d0_lplu_state = igb_set_d0_lplu_state_82575;
+- phy->ops.set_d3_lplu_state = igb_set_d3_lplu_state;
++ *(void **)&phy->ops.get_phy_info = igb_get_phy_info_igp;
++ *(void **)&phy->ops.get_cable_length = igb_get_cable_length_igp_2;
++ *(void **)&phy->ops.force_speed_duplex = igb_phy_force_speed_duplex_igp;
++ *(void **)&phy->ops.set_d0_lplu_state = igb_set_d0_lplu_state_82575;
++ *(void **)&phy->ops.set_d3_lplu_state = igb_set_d3_lplu_state;
+ break;
+ default:
+ return -E1000_ERR_PHY;
@@ -1410,7 +1410,7 @@ void igb_vmdq_set_replication_pf(struct
wr32(E1000_VT_CTL, vt_ctl);
}
@@ -32812,6 +33953,114 @@ diff -urNp linux-2.6.32.43/drivers/net/igb/e1000_hw.h linux-2.6.32.43/drivers/ne
};
extern const struct e1000_info e1000_82575_info;
+diff -urNp linux-2.6.32.43/drivers/net/igb/e1000_mbx.c linux-2.6.32.43/drivers/net/igb/e1000_mbx.c
+--- linux-2.6.32.43/drivers/net/igb/e1000_mbx.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/igb/e1000_mbx.c 2011-08-05 20:33:55.000000000 -0400
+@@ -414,13 +414,13 @@ s32 igb_init_mbx_params_pf(struct e1000_
+
+ mbx->size = E1000_VFMAILBOX_SIZE;
+
+- mbx->ops.read = igb_read_mbx_pf;
+- mbx->ops.write = igb_write_mbx_pf;
+- mbx->ops.read_posted = igb_read_posted_mbx;
+- mbx->ops.write_posted = igb_write_posted_mbx;
+- mbx->ops.check_for_msg = igb_check_for_msg_pf;
+- mbx->ops.check_for_ack = igb_check_for_ack_pf;
+- mbx->ops.check_for_rst = igb_check_for_rst_pf;
++ *(void **)&mbx->ops.read = igb_read_mbx_pf;
++ *(void **)&mbx->ops.write = igb_write_mbx_pf;
++ *(void **)&mbx->ops.read_posted = igb_read_posted_mbx;
++ *(void **)&mbx->ops.write_posted = igb_write_posted_mbx;
++ *(void **)&mbx->ops.check_for_msg = igb_check_for_msg_pf;
++ *(void **)&mbx->ops.check_for_ack = igb_check_for_ack_pf;
++ *(void **)&mbx->ops.check_for_rst = igb_check_for_rst_pf;
+
+ mbx->stats.msgs_tx = 0;
+ mbx->stats.msgs_rx = 0;
+diff -urNp linux-2.6.32.43/drivers/net/igb/igb_main.c linux-2.6.32.43/drivers/net/igb/igb_main.c
+--- linux-2.6.32.43/drivers/net/igb/igb_main.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/igb/igb_main.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1295,9 +1295,9 @@ static int __devinit igb_probe(struct pc
+ /* setup the private structure */
+ hw->back = adapter;
+ /* Copy the default MAC, PHY and NVM function pointers */
+- memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
+- memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
+- memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
++ memcpy((void *)&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
++ memcpy((void *)&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
++ memcpy((void *)&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops));
+ /* Initialize skew-specific constants */
+ err = ei->get_invariants(hw);
+ if (err)
+diff -urNp linux-2.6.32.43/drivers/net/igbvf/mbx.c linux-2.6.32.43/drivers/net/igbvf/mbx.c
+--- linux-2.6.32.43/drivers/net/igbvf/mbx.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/igbvf/mbx.c 2011-08-05 20:33:55.000000000 -0400
+@@ -331,13 +331,13 @@ s32 e1000_init_mbx_params_vf(struct e100
+
+ mbx->size = E1000_VFMAILBOX_SIZE;
+
+- mbx->ops.read = e1000_read_mbx_vf;
+- mbx->ops.write = e1000_write_mbx_vf;
+- mbx->ops.read_posted = e1000_read_posted_mbx;
+- mbx->ops.write_posted = e1000_write_posted_mbx;
+- mbx->ops.check_for_msg = e1000_check_for_msg_vf;
+- mbx->ops.check_for_ack = e1000_check_for_ack_vf;
+- mbx->ops.check_for_rst = e1000_check_for_rst_vf;
++ *(void **)&mbx->ops.read = e1000_read_mbx_vf;
++ *(void **)&mbx->ops.write = e1000_write_mbx_vf;
++ *(void **)&mbx->ops.read_posted = e1000_read_posted_mbx;
++ *(void **)&mbx->ops.write_posted = e1000_write_posted_mbx;
++ *(void **)&mbx->ops.check_for_msg = e1000_check_for_msg_vf;
++ *(void **)&mbx->ops.check_for_ack = e1000_check_for_ack_vf;
++ *(void **)&mbx->ops.check_for_rst = e1000_check_for_rst_vf;
+
+ mbx->stats.msgs_tx = 0;
+ mbx->stats.msgs_rx = 0;
+diff -urNp linux-2.6.32.43/drivers/net/igbvf/vf.c linux-2.6.32.43/drivers/net/igbvf/vf.c
+--- linux-2.6.32.43/drivers/net/igbvf/vf.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/igbvf/vf.c 2011-08-05 20:33:55.000000000 -0400
+@@ -55,21 +55,21 @@ static s32 e1000_init_mac_params_vf(stru
+
+ /* Function pointers */
+ /* reset */
+- mac->ops.reset_hw = e1000_reset_hw_vf;
++ *(void **)&mac->ops.reset_hw = e1000_reset_hw_vf;
+ /* hw initialization */
+- mac->ops.init_hw = e1000_init_hw_vf;
++ *(void **)&mac->ops.init_hw = e1000_init_hw_vf;
+ /* check for link */
+- mac->ops.check_for_link = e1000_check_for_link_vf;
++ *(void **)&mac->ops.check_for_link = e1000_check_for_link_vf;
+ /* link info */
+- mac->ops.get_link_up_info = e1000_get_link_up_info_vf;
++ *(void **)&mac->ops.get_link_up_info = e1000_get_link_up_info_vf;
+ /* multicast address update */
+- mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_vf;
++ *(void **)&mac->ops.update_mc_addr_list = e1000_update_mc_addr_list_vf;
+ /* set mac address */
+- mac->ops.rar_set = e1000_rar_set_vf;
++ *(void **)&mac->ops.rar_set = e1000_rar_set_vf;
+ /* read mac address */
+- mac->ops.read_mac_addr = e1000_read_mac_addr_vf;
++ *(void **)&mac->ops.read_mac_addr = e1000_read_mac_addr_vf;
+ /* set vlan filter table array */
+- mac->ops.set_vfta = e1000_set_vfta_vf;
++ *(void **)&mac->ops.set_vfta = e1000_set_vfta_vf;
+
+ return E1000_SUCCESS;
+ }
+@@ -80,8 +80,8 @@ static s32 e1000_init_mac_params_vf(stru
+ **/
+ void e1000_init_function_pointers_vf(struct e1000_hw *hw)
+ {
+- hw->mac.ops.init_params = e1000_init_mac_params_vf;
+- hw->mbx.ops.init_params = e1000_init_mbx_params_vf;
++ *(void **)&hw->mac.ops.init_params = e1000_init_mac_params_vf;
++ *(void **)&hw->mbx.ops.init_params = e1000_init_mbx_params_vf;
+ }
+
+ /**
diff -urNp linux-2.6.32.43/drivers/net/iseries_veth.c linux-2.6.32.43/drivers/net/iseries_veth.c
--- linux-2.6.32.43/drivers/net/iseries_veth.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/iseries_veth.c 2011-04-17 15:56:46.000000000 -0400
@@ -32858,6 +34107,105 @@ diff -urNp linux-2.6.32.43/drivers/net/ixgb/ixgb_param.c linux-2.6.32.43/drivers
if (bd >= IXGB_MAX_NIC) {
printk(KERN_NOTICE
"Warning: no configuration for board #%i\n", bd);
+diff -urNp linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82598.c linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82598.c
+--- linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82598.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82598.c 2011-08-05 20:33:55.000000000 -0400
+@@ -154,19 +154,19 @@ static s32 ixgbe_init_phy_ops_82598(stru
+
+ /* Overwrite the link function pointers if copper PHY */
+ if (mac->ops.get_media_type(hw) == ixgbe_media_type_copper) {
+- mac->ops.setup_link = &ixgbe_setup_copper_link_82598;
+- mac->ops.get_link_capabilities =
++ *(void **)&mac->ops.setup_link = &ixgbe_setup_copper_link_82598;
++ *(void **)&mac->ops.get_link_capabilities =
+ &ixgbe_get_copper_link_capabilities_82598;
+ }
+
+ switch (hw->phy.type) {
+ case ixgbe_phy_tn:
+- phy->ops.check_link = &ixgbe_check_phy_link_tnx;
+- phy->ops.get_firmware_version =
++ *(void **)&phy->ops.check_link = &ixgbe_check_phy_link_tnx;
++ *(void **)&phy->ops.get_firmware_version =
+ &ixgbe_get_phy_firmware_version_tnx;
+ break;
+ case ixgbe_phy_nl:
+- phy->ops.reset = &ixgbe_reset_phy_nl;
++ *(void **)&phy->ops.reset = &ixgbe_reset_phy_nl;
+
+ /* Call SFP+ identify routine to get the SFP+ module type */
+ ret_val = phy->ops.identify_sfp(hw);
+diff -urNp linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82599.c linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82599.c
+--- linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82599.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/ixgbe/ixgbe_82599.c 2011-08-05 20:33:55.000000000 -0400
+@@ -62,9 +62,9 @@ static void ixgbe_init_mac_link_ops_8259
+ struct ixgbe_mac_info *mac = &hw->mac;
+ if (hw->phy.multispeed_fiber) {
+ /* Set up dual speed SFP+ support */
+- mac->ops.setup_link = &ixgbe_setup_mac_link_multispeed_fiber;
++ *(void **)&mac->ops.setup_link = &ixgbe_setup_mac_link_multispeed_fiber;
+ } else {
+- mac->ops.setup_link = &ixgbe_setup_mac_link_82599;
++ *(void **)&mac->ops.setup_link = &ixgbe_setup_mac_link_82599;
+ }
+ }
+
+@@ -76,7 +76,7 @@ static s32 ixgbe_setup_sfp_modules_82599
+ if (hw->phy.sfp_type != ixgbe_sfp_type_unknown) {
+ ixgbe_init_mac_link_ops_82599(hw);
+
+- hw->phy.ops.reset = NULL;
++ *(void **)&hw->phy.ops.reset = NULL;
+
+ ret_val = ixgbe_get_sfp_init_sequence_offsets(hw, &list_offset,
+ &data_offset);
+@@ -171,16 +171,16 @@ static s32 ixgbe_init_phy_ops_82599(stru
+
+ /* If copper media, overwrite with copper function pointers */
+ if (mac->ops.get_media_type(hw) == ixgbe_media_type_copper) {
+- mac->ops.setup_link = &ixgbe_setup_copper_link_82599;
+- mac->ops.get_link_capabilities =
++ *(void **)&mac->ops.setup_link = &ixgbe_setup_copper_link_82599;
++ *(void **)&mac->ops.get_link_capabilities =
+ &ixgbe_get_copper_link_capabilities_82599;
+ }
+
+ /* Set necessary function pointers based on phy type */
+ switch (hw->phy.type) {
+ case ixgbe_phy_tn:
+- phy->ops.check_link = &ixgbe_check_phy_link_tnx;
+- phy->ops.get_firmware_version =
++ *(void **)&phy->ops.check_link = &ixgbe_check_phy_link_tnx;
++ *(void **)&phy->ops.get_firmware_version =
+ &ixgbe_get_phy_firmware_version_tnx;
+ break;
+ default:
+diff -urNp linux-2.6.32.43/drivers/net/ixgbe/ixgbe_main.c linux-2.6.32.43/drivers/net/ixgbe/ixgbe_main.c
+--- linux-2.6.32.43/drivers/net/ixgbe/ixgbe_main.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/ixgbe/ixgbe_main.c 2011-08-05 20:33:55.000000000 -0400
+@@ -5638,18 +5638,18 @@ static int __devinit ixgbe_probe(struct
+ adapter->bd_number = cards_found;
+
+ /* Setup hw api */
+- memcpy(&hw->mac.ops, ii->mac_ops, sizeof(hw->mac.ops));
++ memcpy((void *)&hw->mac.ops, ii->mac_ops, sizeof(hw->mac.ops));
+ hw->mac.type = ii->mac;
+
+ /* EEPROM */
+- memcpy(&hw->eeprom.ops, ii->eeprom_ops, sizeof(hw->eeprom.ops));
++ memcpy((void *)&hw->eeprom.ops, ii->eeprom_ops, sizeof(hw->eeprom.ops));
+ eec = IXGBE_READ_REG(hw, IXGBE_EEC);
+ /* If EEPROM is valid (bit 8 = 1), use default otherwise use bit bang */
+ if (!(eec & (1 << 8)))
+- hw->eeprom.ops.read = &ixgbe_read_eeprom_bit_bang_generic;
++ *(void **)&hw->eeprom.ops.read = &ixgbe_read_eeprom_bit_bang_generic;
+
+ /* PHY */
+- memcpy(&hw->phy.ops, ii->phy_ops, sizeof(hw->phy.ops));
++ memcpy((void *)&hw->phy.ops, ii->phy_ops, sizeof(hw->phy.ops));
+ hw->phy.sfp_type = ixgbe_sfp_type_unknown;
+ /* ixgbe_identify_phy_generic will set prtad and mmds properly */
+ hw->phy.mdio.prtad = MDIO_PRTAD_NONE;
diff -urNp linux-2.6.32.43/drivers/net/mlx4/main.c linux-2.6.32.43/drivers/net/mlx4/main.c
--- linux-2.6.32.43/drivers/net/mlx4/main.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/mlx4/main.c 2011-05-18 20:09:37.000000000 -0400
@@ -32892,7 +34240,7 @@ diff -urNp linux-2.6.32.43/drivers/net/niu.c linux-2.6.32.43/drivers/net/niu.c
ldg_num_map[i] = first_ldg + i;
diff -urNp linux-2.6.32.43/drivers/net/pcnet32.c linux-2.6.32.43/drivers/net/pcnet32.c
--- linux-2.6.32.43/drivers/net/pcnet32.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/net/pcnet32.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/net/pcnet32.c 2011-08-05 20:33:55.000000000 -0400
@@ -79,7 +79,7 @@ static int cards_found;
/*
* VLB I/O addresses
@@ -32902,6 +34250,633 @@ diff -urNp linux-2.6.32.43/drivers/net/pcnet32.c linux-2.6.32.43/drivers/net/pcn
{ 0x300, 0x320, 0x340, 0x360, 0 };
static int pcnet32_debug = 0;
+@@ -267,7 +267,7 @@ struct pcnet32_private {
+ struct sk_buff **rx_skbuff;
+ dma_addr_t *tx_dma_addr;
+ dma_addr_t *rx_dma_addr;
+- struct pcnet32_access a;
++ struct pcnet32_access *a;
+ spinlock_t lock; /* Guard lock */
+ unsigned int cur_rx, cur_tx; /* The next free ring entry */
+ unsigned int rx_ring_size; /* current rx ring size */
+@@ -457,9 +457,9 @@ static void pcnet32_netif_start(struct n
+ u16 val;
+
+ netif_wake_queue(dev);
+- val = lp->a.read_csr(ioaddr, CSR3);
++ val = lp->a->read_csr(ioaddr, CSR3);
+ val &= 0x00ff;
+- lp->a.write_csr(ioaddr, CSR3, val);
++ lp->a->write_csr(ioaddr, CSR3, val);
+ napi_enable(&lp->napi);
+ }
+
+@@ -744,7 +744,7 @@ static u32 pcnet32_get_link(struct net_d
+ r = mii_link_ok(&lp->mii_if);
+ } else if (lp->chip_version >= PCNET32_79C970A) {
+ ulong ioaddr = dev->base_addr; /* card base I/O address */
+- r = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
++ r = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
+ } else { /* can not detect link on really old chips */
+ r = 1;
+ }
+@@ -806,7 +806,7 @@ static int pcnet32_set_ringparam(struct
+ pcnet32_netif_stop(dev);
+
+ spin_lock_irqsave(&lp->lock, flags);
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
+
+ size = min(ering->tx_pending, (unsigned int)TX_MAX_RING_SIZE);
+
+@@ -886,7 +886,7 @@ static void pcnet32_ethtool_test(struct
+ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
+ {
+ struct pcnet32_private *lp = netdev_priv(dev);
+- struct pcnet32_access *a = &lp->a; /* access to registers */
++ struct pcnet32_access *a = lp->a; /* access to registers */
+ ulong ioaddr = dev->base_addr; /* card base I/O address */
+ struct sk_buff *skb; /* sk buff */
+ int x, i; /* counters */
+@@ -906,21 +906,21 @@ static int pcnet32_loopback_test(struct
+ pcnet32_netif_stop(dev);
+
+ spin_lock_irqsave(&lp->lock, flags);
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
+
+ numbuffs = min(numbuffs, (int)min(lp->rx_ring_size, lp->tx_ring_size));
+
+ /* Reset the PCNET32 */
+- lp->a.reset(ioaddr);
+- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
++ lp->a->reset(ioaddr);
++ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+
+ /* switch pcnet32 to 32bit mode */
+- lp->a.write_bcr(ioaddr, 20, 2);
++ lp->a->write_bcr(ioaddr, 20, 2);
+
+ /* purge & init rings but don't actually restart */
+ pcnet32_restart(dev, 0x0000);
+
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
+
+ /* Initialize Transmit buffers. */
+ size = data_len + 15;
+@@ -966,10 +966,10 @@ static int pcnet32_loopback_test(struct
+
+ /* set int loopback in CSR15 */
+ x = a->read_csr(ioaddr, CSR15) & 0xfffc;
+- lp->a.write_csr(ioaddr, CSR15, x | 0x0044);
++ lp->a->write_csr(ioaddr, CSR15, x | 0x0044);
+
+ teststatus = cpu_to_le16(0x8000);
+- lp->a.write_csr(ioaddr, CSR0, CSR0_START); /* Set STRT bit */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_START); /* Set STRT bit */
+
+ /* Check status of descriptors */
+ for (x = 0; x < numbuffs; x++) {
+@@ -990,7 +990,7 @@ static int pcnet32_loopback_test(struct
+ }
+ }
+
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
+ wmb();
+ if (netif_msg_hw(lp) && netif_msg_pktdata(lp)) {
+ printk(KERN_DEBUG "%s: RX loopback packets:\n", dev->name);
+@@ -1039,7 +1039,7 @@ static int pcnet32_loopback_test(struct
+ pcnet32_restart(dev, CSR0_NORMAL);
+ } else {
+ pcnet32_purge_rx_ring(dev);
+- lp->a.write_bcr(ioaddr, 20, 4); /* return to 16bit mode */
++ lp->a->write_bcr(ioaddr, 20, 4); /* return to 16bit mode */
+ }
+ spin_unlock_irqrestore(&lp->lock, flags);
+
+@@ -1049,7 +1049,7 @@ static int pcnet32_loopback_test(struct
+ static void pcnet32_led_blink_callback(struct net_device *dev)
+ {
+ struct pcnet32_private *lp = netdev_priv(dev);
+- struct pcnet32_access *a = &lp->a;
++ struct pcnet32_access *a = lp->a;
+ ulong ioaddr = dev->base_addr;
+ unsigned long flags;
+ int i;
+@@ -1066,7 +1066,7 @@ static void pcnet32_led_blink_callback(s
+ static int pcnet32_phys_id(struct net_device *dev, u32 data)
+ {
+ struct pcnet32_private *lp = netdev_priv(dev);
+- struct pcnet32_access *a = &lp->a;
++ struct pcnet32_access *a = lp->a;
+ ulong ioaddr = dev->base_addr;
+ unsigned long flags;
+ int i, regs[4];
+@@ -1112,7 +1112,7 @@ static int pcnet32_suspend(struct net_de
+ {
+ int csr5;
+ struct pcnet32_private *lp = netdev_priv(dev);
+- struct pcnet32_access *a = &lp->a;
++ struct pcnet32_access *a = lp->a;
+ ulong ioaddr = dev->base_addr;
+ int ticks;
+
+@@ -1388,8 +1388,8 @@ static int pcnet32_poll(struct napi_stru
+ spin_lock_irqsave(&lp->lock, flags);
+ if (pcnet32_tx(dev)) {
+ /* reset the chip to clear the error condition, then restart */
+- lp->a.reset(ioaddr);
+- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
++ lp->a->reset(ioaddr);
++ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+ pcnet32_restart(dev, CSR0_START);
+ netif_wake_queue(dev);
+ }
+@@ -1401,12 +1401,12 @@ static int pcnet32_poll(struct napi_stru
+ __napi_complete(napi);
+
+ /* clear interrupt masks */
+- val = lp->a.read_csr(ioaddr, CSR3);
++ val = lp->a->read_csr(ioaddr, CSR3);
+ val &= 0x00ff;
+- lp->a.write_csr(ioaddr, CSR3, val);
++ lp->a->write_csr(ioaddr, CSR3, val);
+
+ /* Set interrupt enable. */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN);
+
+ spin_unlock_irqrestore(&lp->lock, flags);
+ }
+@@ -1429,7 +1429,7 @@ static void pcnet32_get_regs(struct net_
+ int i, csr0;
+ u16 *buff = ptr;
+ struct pcnet32_private *lp = netdev_priv(dev);
+- struct pcnet32_access *a = &lp->a;
++ struct pcnet32_access *a = lp->a;
+ ulong ioaddr = dev->base_addr;
+ unsigned long flags;
+
+@@ -1466,9 +1466,9 @@ static void pcnet32_get_regs(struct net_
+ for (j = 0; j < PCNET32_MAX_PHYS; j++) {
+ if (lp->phymask & (1 << j)) {
+ for (i = 0; i < PCNET32_REGS_PER_PHY; i++) {
+- lp->a.write_bcr(ioaddr, 33,
++ lp->a->write_bcr(ioaddr, 33,
+ (j << 5) | i);
+- *buff++ = lp->a.read_bcr(ioaddr, 34);
++ *buff++ = lp->a->read_bcr(ioaddr, 34);
+ }
+ }
+ }
+@@ -1858,7 +1858,7 @@ pcnet32_probe1(unsigned long ioaddr, int
+ ((cards_found >= MAX_UNITS) || full_duplex[cards_found]))
+ lp->options |= PCNET32_PORT_FD;
+
+- lp->a = *a;
++ lp->a = a;
+
+ /* prior to register_netdev, dev->name is not yet correct */
+ if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) {
+@@ -1917,7 +1917,7 @@ pcnet32_probe1(unsigned long ioaddr, int
+ if (lp->mii) {
+ /* lp->phycount and lp->phymask are set to 0 by memset above */
+
+- lp->mii_if.phy_id = ((lp->a.read_bcr(ioaddr, 33)) >> 5) & 0x1f;
++ lp->mii_if.phy_id = ((lp->a->read_bcr(ioaddr, 33)) >> 5) & 0x1f;
+ /* scan for PHYs */
+ for (i = 0; i < PCNET32_MAX_PHYS; i++) {
+ unsigned short id1, id2;
+@@ -1938,7 +1938,7 @@ pcnet32_probe1(unsigned long ioaddr, int
+ "Found PHY %04x:%04x at address %d.\n",
+ id1, id2, i);
+ }
+- lp->a.write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
++ lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
+ if (lp->phycount > 1) {
+ lp->options |= PCNET32_PORT_MII;
+ }
+@@ -2109,10 +2109,10 @@ static int pcnet32_open(struct net_devic
+ }
+
+ /* Reset the PCNET32 */
+- lp->a.reset(ioaddr);
++ lp->a->reset(ioaddr);
+
+ /* switch pcnet32 to 32bit mode */
+- lp->a.write_bcr(ioaddr, 20, 2);
++ lp->a->write_bcr(ioaddr, 20, 2);
+
+ if (netif_msg_ifup(lp))
+ printk(KERN_DEBUG
+@@ -2122,14 +2122,14 @@ static int pcnet32_open(struct net_devic
+ (u32) (lp->init_dma_addr));
+
+ /* set/reset autoselect bit */
+- val = lp->a.read_bcr(ioaddr, 2) & ~2;
++ val = lp->a->read_bcr(ioaddr, 2) & ~2;
+ if (lp->options & PCNET32_PORT_ASEL)
+ val |= 2;
+- lp->a.write_bcr(ioaddr, 2, val);
++ lp->a->write_bcr(ioaddr, 2, val);
+
+ /* handle full duplex setting */
+ if (lp->mii_if.full_duplex) {
+- val = lp->a.read_bcr(ioaddr, 9) & ~3;
++ val = lp->a->read_bcr(ioaddr, 9) & ~3;
+ if (lp->options & PCNET32_PORT_FD) {
+ val |= 1;
+ if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI))
+@@ -2139,14 +2139,14 @@ static int pcnet32_open(struct net_devic
+ if (lp->chip_version == 0x2627)
+ val |= 3;
+ }
+- lp->a.write_bcr(ioaddr, 9, val);
++ lp->a->write_bcr(ioaddr, 9, val);
+ }
+
+ /* set/reset GPSI bit in test register */
+- val = lp->a.read_csr(ioaddr, 124) & ~0x10;
++ val = lp->a->read_csr(ioaddr, 124) & ~0x10;
+ if ((lp->options & PCNET32_PORT_PORTSEL) == PCNET32_PORT_GPSI)
+ val |= 0x10;
+- lp->a.write_csr(ioaddr, 124, val);
++ lp->a->write_csr(ioaddr, 124, val);
+
+ /* Allied Telesyn AT 2700/2701 FX are 100Mbit only and do not negotiate */
+ if (pdev && pdev->subsystem_vendor == PCI_VENDOR_ID_AT &&
+@@ -2167,24 +2167,24 @@ static int pcnet32_open(struct net_devic
+ * duplex, and/or enable auto negotiation, and clear DANAS
+ */
+ if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
+- lp->a.write_bcr(ioaddr, 32,
+- lp->a.read_bcr(ioaddr, 32) | 0x0080);
++ lp->a->write_bcr(ioaddr, 32,
++ lp->a->read_bcr(ioaddr, 32) | 0x0080);
+ /* disable Auto Negotiation, set 10Mpbs, HD */
+- val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
++ val = lp->a->read_bcr(ioaddr, 32) & ~0xb8;
+ if (lp->options & PCNET32_PORT_FD)
+ val |= 0x10;
+ if (lp->options & PCNET32_PORT_100)
+ val |= 0x08;
+- lp->a.write_bcr(ioaddr, 32, val);
++ lp->a->write_bcr(ioaddr, 32, val);
+ } else {
+ if (lp->options & PCNET32_PORT_ASEL) {
+- lp->a.write_bcr(ioaddr, 32,
+- lp->a.read_bcr(ioaddr,
++ lp->a->write_bcr(ioaddr, 32,
++ lp->a->read_bcr(ioaddr,
+ 32) | 0x0080);
+ /* enable auto negotiate, setup, disable fd */
+- val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
++ val = lp->a->read_bcr(ioaddr, 32) & ~0x98;
+ val |= 0x20;
+- lp->a.write_bcr(ioaddr, 32, val);
++ lp->a->write_bcr(ioaddr, 32, val);
+ }
+ }
+ } else {
+@@ -2197,10 +2197,10 @@ static int pcnet32_open(struct net_devic
+ * There is really no good other way to handle multiple PHYs
+ * other than turning off all automatics
+ */
+- val = lp->a.read_bcr(ioaddr, 2);
+- lp->a.write_bcr(ioaddr, 2, val & ~2);
+- val = lp->a.read_bcr(ioaddr, 32);
+- lp->a.write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */
++ val = lp->a->read_bcr(ioaddr, 2);
++ lp->a->write_bcr(ioaddr, 2, val & ~2);
++ val = lp->a->read_bcr(ioaddr, 32);
++ lp->a->write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */
+
+ if (!(lp->options & PCNET32_PORT_ASEL)) {
+ /* setup ecmd */
+@@ -2210,7 +2210,7 @@ static int pcnet32_open(struct net_devic
+ ecmd.speed =
+ lp->
+ options & PCNET32_PORT_100 ? SPEED_100 : SPEED_10;
+- bcr9 = lp->a.read_bcr(ioaddr, 9);
++ bcr9 = lp->a->read_bcr(ioaddr, 9);
+
+ if (lp->options & PCNET32_PORT_FD) {
+ ecmd.duplex = DUPLEX_FULL;
+@@ -2219,7 +2219,7 @@ static int pcnet32_open(struct net_devic
+ ecmd.duplex = DUPLEX_HALF;
+ bcr9 |= ~(1 << 0);
+ }
+- lp->a.write_bcr(ioaddr, 9, bcr9);
++ lp->a->write_bcr(ioaddr, 9, bcr9);
+ }
+
+ for (i = 0; i < PCNET32_MAX_PHYS; i++) {
+@@ -2252,9 +2252,9 @@ static int pcnet32_open(struct net_devic
+
+ #ifdef DO_DXSUFLO
+ if (lp->dxsuflo) { /* Disable transmit stop on underflow */
+- val = lp->a.read_csr(ioaddr, CSR3);
++ val = lp->a->read_csr(ioaddr, CSR3);
+ val |= 0x40;
+- lp->a.write_csr(ioaddr, CSR3, val);
++ lp->a->write_csr(ioaddr, CSR3, val);
+ }
+ #endif
+
+@@ -2270,11 +2270,11 @@ static int pcnet32_open(struct net_devic
+ napi_enable(&lp->napi);
+
+ /* Re-initialize the PCNET32, and start it when done. */
+- lp->a.write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
+- lp->a.write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
++ lp->a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
++ lp->a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
+
+- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
++ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
++ lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
+
+ netif_start_queue(dev);
+
+@@ -2286,20 +2286,20 @@ static int pcnet32_open(struct net_devic
+
+ i = 0;
+ while (i++ < 100)
+- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
++ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
+ break;
+ /*
+ * We used to clear the InitDone bit, 0x0100, here but Mark Stockton
+ * reports that doing so triggers a bug in the '974.
+ */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_NORMAL);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL);
+
+ if (netif_msg_ifup(lp))
+ printk(KERN_DEBUG
+ "%s: pcnet32 open after %d ticks, init block %#x csr0 %4.4x.\n",
+ dev->name, i,
+ (u32) (lp->init_dma_addr),
+- lp->a.read_csr(ioaddr, CSR0));
++ lp->a->read_csr(ioaddr, CSR0));
+
+ spin_unlock_irqrestore(&lp->lock, flags);
+
+@@ -2313,7 +2313,7 @@ static int pcnet32_open(struct net_devic
+ * Switch back to 16bit mode to avoid problems with dumb
+ * DOS packet driver after a warm reboot
+ */
+- lp->a.write_bcr(ioaddr, 20, 4);
++ lp->a->write_bcr(ioaddr, 20, 4);
+
+ err_free_irq:
+ spin_unlock_irqrestore(&lp->lock, flags);
+@@ -2420,7 +2420,7 @@ static void pcnet32_restart(struct net_d
+
+ /* wait for stop */
+ for (i = 0; i < 100; i++)
+- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_STOP)
++ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP)
+ break;
+
+ if (i >= 100 && netif_msg_drv(lp))
+@@ -2433,13 +2433,13 @@ static void pcnet32_restart(struct net_d
+ return;
+
+ /* ReInit Ring */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
+ i = 0;
+ while (i++ < 1000)
+- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
++ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
+ break;
+
+- lp->a.write_csr(ioaddr, CSR0, csr0_bits);
++ lp->a->write_csr(ioaddr, CSR0, csr0_bits);
+ }
+
+ static void pcnet32_tx_timeout(struct net_device *dev)
+@@ -2452,8 +2452,8 @@ static void pcnet32_tx_timeout(struct ne
+ if (pcnet32_debug & NETIF_MSG_DRV)
+ printk(KERN_ERR
+ "%s: transmit timed out, status %4.4x, resetting.\n",
+- dev->name, lp->a.read_csr(ioaddr, CSR0));
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
++ dev->name, lp->a->read_csr(ioaddr, CSR0));
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
+ dev->stats.tx_errors++;
+ if (netif_msg_tx_err(lp)) {
+ int i;
+@@ -2497,7 +2497,7 @@ static netdev_tx_t pcnet32_start_xmit(st
+ if (netif_msg_tx_queued(lp)) {
+ printk(KERN_DEBUG
+ "%s: pcnet32_start_xmit() called, csr0 %4.4x.\n",
+- dev->name, lp->a.read_csr(ioaddr, CSR0));
++ dev->name, lp->a->read_csr(ioaddr, CSR0));
+ }
+
+ /* Default status -- will not enable Successful-TxDone
+@@ -2528,7 +2528,7 @@ static netdev_tx_t pcnet32_start_xmit(st
+ dev->stats.tx_bytes += skb->len;
+
+ /* Trigger an immediate send poll. */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
+
+ dev->trans_start = jiffies;
+
+@@ -2555,18 +2555,18 @@ pcnet32_interrupt(int irq, void *dev_id)
+
+ spin_lock(&lp->lock);
+
+- csr0 = lp->a.read_csr(ioaddr, CSR0);
++ csr0 = lp->a->read_csr(ioaddr, CSR0);
+ while ((csr0 & 0x8f00) && --boguscnt >= 0) {
+ if (csr0 == 0xffff) {
+ break; /* PCMCIA remove happened */
+ }
+ /* Acknowledge all of the current interrupt sources ASAP. */
+- lp->a.write_csr(ioaddr, CSR0, csr0 & ~0x004f);
++ lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f);
+
+ if (netif_msg_intr(lp))
+ printk(KERN_DEBUG
+ "%s: interrupt csr0=%#2.2x new csr=%#2.2x.\n",
+- dev->name, csr0, lp->a.read_csr(ioaddr, CSR0));
++ dev->name, csr0, lp->a->read_csr(ioaddr, CSR0));
+
+ /* Log misc errors. */
+ if (csr0 & 0x4000)
+@@ -2595,19 +2595,19 @@ pcnet32_interrupt(int irq, void *dev_id)
+ if (napi_schedule_prep(&lp->napi)) {
+ u16 val;
+ /* set interrupt masks */
+- val = lp->a.read_csr(ioaddr, CSR3);
++ val = lp->a->read_csr(ioaddr, CSR3);
+ val |= 0x5f00;
+- lp->a.write_csr(ioaddr, CSR3, val);
++ lp->a->write_csr(ioaddr, CSR3, val);
+
+ __napi_schedule(&lp->napi);
+ break;
+ }
+- csr0 = lp->a.read_csr(ioaddr, CSR0);
++ csr0 = lp->a->read_csr(ioaddr, CSR0);
+ }
+
+ if (netif_msg_intr(lp))
+ printk(KERN_DEBUG "%s: exiting interrupt, csr0=%#4.4x.\n",
+- dev->name, lp->a.read_csr(ioaddr, CSR0));
++ dev->name, lp->a->read_csr(ioaddr, CSR0));
+
+ spin_unlock(&lp->lock);
+
+@@ -2627,21 +2627,21 @@ static int pcnet32_close(struct net_devi
+
+ spin_lock_irqsave(&lp->lock, flags);
+
+- dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
++ dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
+
+ if (netif_msg_ifdown(lp))
+ printk(KERN_DEBUG
+ "%s: Shutting down ethercard, status was %2.2x.\n",
+- dev->name, lp->a.read_csr(ioaddr, CSR0));
++ dev->name, lp->a->read_csr(ioaddr, CSR0));
+
+ /* We stop the PCNET32 here -- it occasionally polls memory if we don't. */
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
+
+ /*
+ * Switch back to 16bit mode to avoid problems with dumb
+ * DOS packet driver after a warm reboot
+ */
+- lp->a.write_bcr(ioaddr, 20, 4);
++ lp->a->write_bcr(ioaddr, 20, 4);
+
+ spin_unlock_irqrestore(&lp->lock, flags);
+
+@@ -2664,7 +2664,7 @@ static struct net_device_stats *pcnet32_
+ unsigned long flags;
+
+ spin_lock_irqsave(&lp->lock, flags);
+- dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
++ dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
+ spin_unlock_irqrestore(&lp->lock, flags);
+
+ return &dev->stats;
+@@ -2686,10 +2686,10 @@ static void pcnet32_load_multicast(struc
+ if (dev->flags & IFF_ALLMULTI) {
+ ib->filter[0] = cpu_to_le32(~0U);
+ ib->filter[1] = cpu_to_le32(~0U);
+- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
+- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
+- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
+- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
++ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
++ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
++ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
++ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
+ return;
+ }
+ /* clear the multicast filter */
+@@ -2710,7 +2710,7 @@ static void pcnet32_load_multicast(struc
+ mcast_table[crc >> 4] |= cpu_to_le16(1 << (crc & 0xf));
+ }
+ for (i = 0; i < 4; i++)
+- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER + i,
++ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i,
+ le16_to_cpu(mcast_table[i]));
+ return;
+ }
+@@ -2726,7 +2726,7 @@ static void pcnet32_set_multicast_list(s
+
+ spin_lock_irqsave(&lp->lock, flags);
+ suspended = pcnet32_suspend(dev, &flags, 0);
+- csr15 = lp->a.read_csr(ioaddr, CSR15);
++ csr15 = lp->a->read_csr(ioaddr, CSR15);
+ if (dev->flags & IFF_PROMISC) {
+ /* Log any net taps. */
+ if (netif_msg_hw(lp))
+@@ -2735,21 +2735,21 @@ static void pcnet32_set_multicast_list(s
+ lp->init_block->mode =
+ cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) <<
+ 7);
+- lp->a.write_csr(ioaddr, CSR15, csr15 | 0x8000);
++ lp->a->write_csr(ioaddr, CSR15, csr15 | 0x8000);
+ } else {
+ lp->init_block->mode =
+ cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7);
+- lp->a.write_csr(ioaddr, CSR15, csr15 & 0x7fff);
++ lp->a->write_csr(ioaddr, CSR15, csr15 & 0x7fff);
+ pcnet32_load_multicast(dev);
+ }
+
+ if (suspended) {
+ int csr5;
+ /* clear SUSPEND (SPND) - CSR5 bit 0 */
+- csr5 = lp->a.read_csr(ioaddr, CSR5);
+- lp->a.write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
++ csr5 = lp->a->read_csr(ioaddr, CSR5);
++ lp->a->write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
+ } else {
+- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
++ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
+ pcnet32_restart(dev, CSR0_NORMAL);
+ netif_wake_queue(dev);
+ }
+@@ -2767,8 +2767,8 @@ static int mdio_read(struct net_device *
+ if (!lp->mii)
+ return 0;
+
+- lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
+- val_out = lp->a.read_bcr(ioaddr, 34);
++ lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
++ val_out = lp->a->read_bcr(ioaddr, 34);
+
+ return val_out;
+ }
+@@ -2782,8 +2782,8 @@ static void mdio_write(struct net_device
+ if (!lp->mii)
+ return;
+
+- lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
+- lp->a.write_bcr(ioaddr, 34, val);
++ lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
++ lp->a->write_bcr(ioaddr, 34, val);
+ }
+
+ static int pcnet32_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+@@ -2862,7 +2862,7 @@ static void pcnet32_check_media(struct n
+ curr_link = mii_link_ok(&lp->mii_if);
+ } else {
+ ulong ioaddr = dev->base_addr; /* card base I/O address */
+- curr_link = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
++ curr_link = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
+ }
+ if (!curr_link) {
+ if (prev_link || verbose) {
+@@ -2887,13 +2887,13 @@ static void pcnet32_check_media(struct n
+ (ecmd.duplex ==
+ DUPLEX_FULL) ? "full" : "half");
+ }
+- bcr9 = lp->a.read_bcr(dev->base_addr, 9);
++ bcr9 = lp->a->read_bcr(dev->base_addr, 9);
+ if ((bcr9 & (1 << 0)) != lp->mii_if.full_duplex) {
+ if (lp->mii_if.full_duplex)
+ bcr9 |= (1 << 0);
+ else
+ bcr9 &= ~(1 << 0);
+- lp->a.write_bcr(dev->base_addr, 9, bcr9);
++ lp->a->write_bcr(dev->base_addr, 9, bcr9);
+ }
+ } else {
+ if (netif_msg_link(lp))
diff -urNp linux-2.6.32.43/drivers/net/tg3.h linux-2.6.32.43/drivers/net/tg3.h
--- linux-2.6.32.43/drivers/net/tg3.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/tg3.h 2011-04-17 15:56:46.000000000 -0400
@@ -32913,6 +34888,79 @@ diff -urNp linux-2.6.32.43/drivers/net/tg3.h linux-2.6.32.43/drivers/net/tg3.h
#define CHIPREV_ID_5750_C2 0x4202
#define CHIPREV_ID_5752_A0_HW 0x5000
#define CHIPREV_ID_5752_A0 0x6000
+diff -urNp linux-2.6.32.43/drivers/net/tokenring/abyss.c linux-2.6.32.43/drivers/net/tokenring/abyss.c
+--- linux-2.6.32.43/drivers/net/tokenring/abyss.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/tokenring/abyss.c 2011-08-05 20:33:55.000000000 -0400
+@@ -451,10 +451,12 @@ static struct pci_driver abyss_driver =
+
+ static int __init abyss_init (void)
+ {
+- abyss_netdev_ops = tms380tr_netdev_ops;
++ pax_open_kernel();
++ memcpy((void *)&abyss_netdev_ops, &tms380tr_netdev_ops, sizeof(tms380tr_netdev_ops));
+
+- abyss_netdev_ops.ndo_open = abyss_open;
+- abyss_netdev_ops.ndo_stop = abyss_close;
++ *(void **)&abyss_netdev_ops.ndo_open = abyss_open;
++ *(void **)&abyss_netdev_ops.ndo_stop = abyss_close;
++ pax_close_kernel();
+
+ return pci_register_driver(&abyss_driver);
+ }
+diff -urNp linux-2.6.32.43/drivers/net/tokenring/madgemc.c linux-2.6.32.43/drivers/net/tokenring/madgemc.c
+--- linux-2.6.32.43/drivers/net/tokenring/madgemc.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/tokenring/madgemc.c 2011-08-05 20:33:55.000000000 -0400
+@@ -755,9 +755,11 @@ static struct mca_driver madgemc_driver
+
+ static int __init madgemc_init (void)
+ {
+- madgemc_netdev_ops = tms380tr_netdev_ops;
+- madgemc_netdev_ops.ndo_open = madgemc_open;
+- madgemc_netdev_ops.ndo_stop = madgemc_close;
++ pax_open_kernel();
++ memcpy((void *)&madgemc_netdev_ops, &tms380tr_netdev_ops, sizeof(tms380tr_netdev_ops));
++ *(void **)&madgemc_netdev_ops.ndo_open = madgemc_open;
++ *(void **)&madgemc_netdev_ops.ndo_stop = madgemc_close;
++ pax_close_kernel();
+
+ return mca_register_driver (&madgemc_driver);
+ }
+diff -urNp linux-2.6.32.43/drivers/net/tokenring/proteon.c linux-2.6.32.43/drivers/net/tokenring/proteon.c
+--- linux-2.6.32.43/drivers/net/tokenring/proteon.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/tokenring/proteon.c 2011-08-05 20:33:55.000000000 -0400
+@@ -353,9 +353,11 @@ static int __init proteon_init(void)
+ struct platform_device *pdev;
+ int i, num = 0, err = 0;
+
+- proteon_netdev_ops = tms380tr_netdev_ops;
+- proteon_netdev_ops.ndo_open = proteon_open;
+- proteon_netdev_ops.ndo_stop = tms380tr_close;
++ pax_open_kernel();
++ memcpy((void *)&proteon_netdev_ops, &tms380tr_netdev_ops, sizeof(tms380tr_netdev_ops));
++ *(void **)&proteon_netdev_ops.ndo_open = proteon_open;
++ *(void **)&proteon_netdev_ops.ndo_stop = tms380tr_close;
++ pax_close_kernel();
+
+ err = platform_driver_register(&proteon_driver);
+ if (err)
+diff -urNp linux-2.6.32.43/drivers/net/tokenring/skisa.c linux-2.6.32.43/drivers/net/tokenring/skisa.c
+--- linux-2.6.32.43/drivers/net/tokenring/skisa.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/tokenring/skisa.c 2011-08-05 20:33:55.000000000 -0400
+@@ -363,9 +363,11 @@ static int __init sk_isa_init(void)
+ struct platform_device *pdev;
+ int i, num = 0, err = 0;
+
+- sk_isa_netdev_ops = tms380tr_netdev_ops;
+- sk_isa_netdev_ops.ndo_open = sk_isa_open;
+- sk_isa_netdev_ops.ndo_stop = tms380tr_close;
++ pax_open_kernel();
++ memcpy((void *)&sk_isa_netdev_ops, &tms380tr_netdev_ops, sizeof(tms380tr_netdev_ops));
++ *(void **)&sk_isa_netdev_ops.ndo_open = sk_isa_open;
++ *(void **)&sk_isa_netdev_ops.ndo_stop = tms380tr_close;
++ pax_close_kernel();
+
+ err = platform_driver_register(&sk_isa_driver);
+ if (err)
diff -urNp linux-2.6.32.43/drivers/net/tulip/de2104x.c linux-2.6.32.43/drivers/net/tulip/de2104x.c
--- linux-2.6.32.43/drivers/net/tulip/de2104x.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/tulip/de2104x.c 2011-05-16 21:46:57.000000000 -0400
@@ -33036,6 +35084,18 @@ diff -urNp linux-2.6.32.43/drivers/net/usb/hso.c linux-2.6.32.43/drivers/net/usb
result =
hso_start_serial_device(serial_table[i], GFP_NOIO);
hso_kick_transmit(dev2ser(serial_table[i]));
+diff -urNp linux-2.6.32.43/drivers/net/vxge/vxge-config.h linux-2.6.32.43/drivers/net/vxge/vxge-config.h
+--- linux-2.6.32.43/drivers/net/vxge/vxge-config.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/vxge/vxge-config.h 2011-08-05 20:33:55.000000000 -0400
+@@ -474,7 +474,7 @@ struct vxge_hw_uld_cbs {
+ void (*link_down)(struct __vxge_hw_device *devh);
+ void (*crit_err)(struct __vxge_hw_device *devh,
+ enum vxge_hw_event type, u64 ext_data);
+-};
++} __no_const;
+
+ /*
+ * struct __vxge_hw_blockpool_entry - Block private data structure
diff -urNp linux-2.6.32.43/drivers/net/vxge/vxge-main.c linux-2.6.32.43/drivers/net/vxge/vxge-main.c
--- linux-2.6.32.43/drivers/net/vxge/vxge-main.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/vxge/vxge-main.c 2011-05-16 21:46:57.000000000 -0400
@@ -33057,6 +35117,18 @@ diff -urNp linux-2.6.32.43/drivers/net/vxge/vxge-main.c linux-2.6.32.43/drivers/
/*
* Filling
* - itable with bucket numbers
+diff -urNp linux-2.6.32.43/drivers/net/vxge/vxge-traffic.h linux-2.6.32.43/drivers/net/vxge/vxge-traffic.h
+--- linux-2.6.32.43/drivers/net/vxge/vxge-traffic.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/vxge/vxge-traffic.h 2011-08-05 20:33:55.000000000 -0400
+@@ -2123,7 +2123,7 @@ struct vxge_hw_mempool_cbs {
+ struct vxge_hw_mempool_dma *dma_object,
+ u32 index,
+ u32 is_last);
+-};
++} __no_const;
+
+ void
+ __vxge_hw_mempool_destroy(
diff -urNp linux-2.6.32.43/drivers/net/wan/cycx_x25.c linux-2.6.32.43/drivers/net/wan/cycx_x25.c
--- linux-2.6.32.43/drivers/net/wan/cycx_x25.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/wan/cycx_x25.c 2011-05-16 21:46:57.000000000 -0400
@@ -33069,6 +35141,34 @@ diff -urNp linux-2.6.32.43/drivers/net/wan/cycx_x25.c linux-2.6.32.43/drivers/ne
if (len >= (sizeof(hex) / 2))
len = (sizeof(hex) / 2) - 1;
+diff -urNp linux-2.6.32.43/drivers/net/wan/hdlc_x25.c linux-2.6.32.43/drivers/net/wan/hdlc_x25.c
+--- linux-2.6.32.43/drivers/net/wan/hdlc_x25.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/wan/hdlc_x25.c 2011-08-05 20:33:55.000000000 -0400
+@@ -136,16 +136,16 @@ static netdev_tx_t x25_xmit(struct sk_bu
+
+ static int x25_open(struct net_device *dev)
+ {
+- struct lapb_register_struct cb;
++ static struct lapb_register_struct cb = {
++ .connect_confirmation = x25_connected,
++ .connect_indication = x25_connected,
++ .disconnect_confirmation = x25_disconnected,
++ .disconnect_indication = x25_disconnected,
++ .data_indication = x25_data_indication,
++ .data_transmit = x25_data_transmit
++ };
+ int result;
+
+- cb.connect_confirmation = x25_connected;
+- cb.connect_indication = x25_connected;
+- cb.disconnect_confirmation = x25_disconnected;
+- cb.disconnect_indication = x25_disconnected;
+- cb.data_indication = x25_data_indication;
+- cb.data_transmit = x25_data_transmit;
+-
+ result = lapb_register(dev, &cb);
+ if (result != LAPB_OK)
+ return result;
diff -urNp linux-2.6.32.43/drivers/net/wimax/i2400m/usb-fw.c linux-2.6.32.43/drivers/net/wimax/i2400m/usb-fw.c
--- linux-2.6.32.43/drivers/net/wimax/i2400m/usb-fw.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/wimax/i2400m/usb-fw.c 2011-05-16 21:46:57.000000000 -0400
@@ -33249,6 +35349,20 @@ diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-1000.c linux-2.6.32.
.ucode = &iwl5000_ucode,
.lib = &iwl1000_lib,
.hcmd = &iwl5000_hcmd,
+diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl3945-base.c
+--- linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl3945-base.c 2011-08-05 20:33:55.000000000 -0400
+@@ -3927,7 +3927,9 @@ static int iwl3945_pci_probe(struct pci_
+ */
+ if (iwl3945_mod_params.disable_hw_scan) {
+ IWL_DEBUG_INFO(priv, "Disabling hw_scan\n");
+- iwl3945_hw_ops.hw_scan = NULL;
++ pax_open_kernel();
++ *(void **)&iwl3945_hw_ops.hw_scan = NULL;
++ pax_close_kernel();
+ }
+
+
diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-3945.c linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-3945.c
--- linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-3945.c 2011-04-17 15:56:46.000000000 -0400
@@ -33305,6 +35419,20 @@ diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-6000.c linux-2.6.32.
.ucode = &iwl5000_ucode,
.lib = &iwl6000_lib,
.hcmd = &iwl5000_hcmd,
+diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn.c
+--- linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2911,7 +2911,9 @@ static int iwl_pci_probe(struct pci_dev
+ if (iwl_debug_level & IWL_DL_INFO)
+ dev_printk(KERN_DEBUG, &(pdev->dev),
+ "Disabling hw_scan\n");
+- iwl_hw_ops.hw_scan = NULL;
++ pax_open_kernel();
++ *(void **)&iwl_hw_ops.hw_scan = NULL;
++ pax_close_kernel();
+ }
+
+ hw = iwl_alloc_all(cfg, &iwl_hw_ops);
diff -urNp linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn-rs.c linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
--- linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/net/wireless/iwlwifi/iwl-agn-rs.c 2011-05-16 21:46:57.000000000 -0400
@@ -33568,6 +35696,18 @@ diff -urNp linux-2.6.32.43/drivers/pci/hotplug/acpiphp_glue.c linux-2.6.32.43/dr
.handler = handle_hotplug_event_func,
};
+diff -urNp linux-2.6.32.43/drivers/pci/hotplug/cpci_hotplug.h linux-2.6.32.43/drivers/pci/hotplug/cpci_hotplug.h
+--- linux-2.6.32.43/drivers/pci/hotplug/cpci_hotplug.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/pci/hotplug/cpci_hotplug.h 2011-08-05 20:33:55.000000000 -0400
+@@ -59,7 +59,7 @@ struct cpci_hp_controller_ops {
+ int (*hardware_test) (struct slot* slot, u32 value);
+ u8 (*get_power) (struct slot* slot);
+ int (*set_power) (struct slot* slot, int value);
+-};
++} __no_const;
+
+ struct cpci_hp_controller {
+ unsigned int irq;
diff -urNp linux-2.6.32.43/drivers/pci/hotplug/cpqphp_nvram.c linux-2.6.32.43/drivers/pci/hotplug/cpqphp_nvram.c
--- linux-2.6.32.43/drivers/pci/hotplug/cpqphp_nvram.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/pci/hotplug/cpqphp_nvram.c 2011-04-17 15:56:46.000000000 -0400
@@ -33871,7 +36011,16 @@ diff -urNp linux-2.6.32.43/drivers/platform/x86/sony-laptop.c linux-2.6.32.43/dr
};
diff -urNp linux-2.6.32.43/drivers/platform/x86/thinkpad_acpi.c linux-2.6.32.43/drivers/platform/x86/thinkpad_acpi.c
--- linux-2.6.32.43/drivers/platform/x86/thinkpad_acpi.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/platform/x86/thinkpad_acpi.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/platform/x86/thinkpad_acpi.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2137,7 +2137,7 @@ static int hotkey_mask_get(void)
+ return 0;
+ }
+
+-void static hotkey_mask_warn_incomplete_mask(void)
++static void hotkey_mask_warn_incomplete_mask(void)
+ {
+ /* log only what the user can fix... */
+ const u32 wantedmask = hotkey_driver_mask &
@@ -6122,7 +6122,7 @@ static void tpacpi_brightness_notify_cha
BACKLIGHT_UPDATE_HOTKEY);
}
@@ -33973,6 +36122,18 @@ diff -urNp linux-2.6.32.43/drivers/pnp/resource.c linux-2.6.32.43/drivers/pnp/re
return 0;
/* check if the resource is reserved */
+diff -urNp linux-2.6.32.43/drivers/power/bq27x00_battery.c linux-2.6.32.43/drivers/power/bq27x00_battery.c
+--- linux-2.6.32.43/drivers/power/bq27x00_battery.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/power/bq27x00_battery.c 2011-08-05 20:33:55.000000000 -0400
+@@ -44,7 +44,7 @@ struct bq27x00_device_info;
+ struct bq27x00_access_methods {
+ int (*read)(u8 reg, int *rt_value, int b_single,
+ struct bq27x00_device_info *di);
+-};
++} __no_const;
+
+ struct bq27x00_device_info {
+ struct device *dev;
diff -urNp linux-2.6.32.43/drivers/rtc/rtc-dev.c linux-2.6.32.43/drivers/rtc/rtc-dev.c
--- linux-2.6.32.43/drivers/rtc/rtc-dev.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/rtc/rtc-dev.c 2011-04-17 15:56:46.000000000 -0400
@@ -34146,6 +36307,18 @@ diff -urNp linux-2.6.32.43/drivers/s390/cio/qdio_perf.h linux-2.6.32.43/drivers/
}
int qdio_setup_perf_stats(void);
+diff -urNp linux-2.6.32.43/drivers/scsi/aacraid/aacraid.h linux-2.6.32.43/drivers/scsi/aacraid/aacraid.h
+--- linux-2.6.32.43/drivers/scsi/aacraid/aacraid.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/aacraid/aacraid.h 2011-08-05 20:33:55.000000000 -0400
+@@ -471,7 +471,7 @@ struct adapter_ops
+ int (*adapter_scsi)(struct fib * fib, struct scsi_cmnd * cmd);
+ /* Administrative operations */
+ int (*adapter_comm)(struct aac_dev * dev, int comm);
+-};
++} __no_const;
+
+ /*
+ * Define which interrupt handler needs to be installed
diff -urNp linux-2.6.32.43/drivers/scsi/aacraid/commctrl.c linux-2.6.32.43/drivers/scsi/aacraid/commctrl.c
--- linux-2.6.32.43/drivers/scsi/aacraid/commctrl.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/aacraid/commctrl.c 2011-05-16 21:46:57.000000000 -0400
@@ -34169,6 +36342,30 @@ diff -urNp linux-2.6.32.43/drivers/scsi/aic94xx/aic94xx_init.c linux-2.6.32.43/d
asd_show_update_bios, asd_store_update_bios);
static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
+diff -urNp linux-2.6.32.43/drivers/scsi/bfa/bfa_iocfc.h linux-2.6.32.43/drivers/scsi/bfa/bfa_iocfc.h
+--- linux-2.6.32.43/drivers/scsi/bfa/bfa_iocfc.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/bfa/bfa_iocfc.h 2011-08-05 20:33:55.000000000 -0400
+@@ -61,7 +61,7 @@ struct bfa_hwif_s {
+ void (*hw_isr_mode_set)(struct bfa_s *bfa, bfa_boolean_t msix);
+ void (*hw_msix_getvecs)(struct bfa_s *bfa, u32 *vecmap,
+ u32 *nvecs, u32 *maxvec);
+-};
++} __no_const;
+ typedef void (*bfa_cb_iocfc_t) (void *cbarg, enum bfa_status status);
+
+ struct bfa_iocfc_s {
+diff -urNp linux-2.6.32.43/drivers/scsi/bfa/bfa_ioc.h linux-2.6.32.43/drivers/scsi/bfa/bfa_ioc.h
+--- linux-2.6.32.43/drivers/scsi/bfa/bfa_ioc.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/bfa/bfa_ioc.h 2011-08-05 20:33:55.000000000 -0400
+@@ -127,7 +127,7 @@ struct bfa_ioc_cbfn_s {
+ bfa_ioc_disable_cbfn_t disable_cbfn;
+ bfa_ioc_hbfail_cbfn_t hbfail_cbfn;
+ bfa_ioc_reset_cbfn_t reset_cbfn;
+-};
++} __no_const;
+
+ /**
+ * Heartbeat failure notification queue element.
diff -urNp linux-2.6.32.43/drivers/scsi/BusLogic.c linux-2.6.32.43/drivers/scsi/BusLogic.c
--- linux-2.6.32.43/drivers/scsi/BusLogic.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/BusLogic.c 2011-05-16 21:46:57.000000000 -0400
@@ -34226,6 +36423,18 @@ diff -urNp linux-2.6.32.43/drivers/scsi/fcoe/libfcoe.c linux-2.6.32.43/drivers/s
fiph = (struct fip_header *)skb->data;
sub = fiph->fip_subcode;
if (sub != FIP_SC_REQ && sub != FIP_SC_REP)
+diff -urNp linux-2.6.32.43/drivers/scsi/fnic/fnic_main.c linux-2.6.32.43/drivers/scsi/fnic/fnic_main.c
+--- linux-2.6.32.43/drivers/scsi/fnic/fnic_main.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/fnic/fnic_main.c 2011-08-05 20:33:55.000000000 -0400
+@@ -669,7 +669,7 @@ static int __devinit fnic_probe(struct p
+ /* Start local port initiatialization */
+
+ lp->link_up = 0;
+- lp->tt = fnic_transport_template;
++ memcpy((void *)&lp->tt, &fnic_transport_template, sizeof(fnic_transport_template));
+
+ lp->max_retry_count = fnic->config.flogi_retries;
+ lp->max_rport_retry_count = fnic->config.plogi_retries;
diff -urNp linux-2.6.32.43/drivers/scsi/gdth.c linux-2.6.32.43/drivers/scsi/gdth.c
--- linux-2.6.32.43/drivers/scsi/gdth.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/gdth.c 2011-05-16 21:46:57.000000000 -0400
@@ -34321,9 +36530,57 @@ diff -urNp linux-2.6.32.43/drivers/scsi/ipr.c linux-2.6.32.43/drivers/scsi/ipr.c
.phy_reset = ipr_ata_phy_reset,
.hardreset = ipr_sata_reset,
.post_internal_cmd = ipr_ata_post_internal,
+diff -urNp linux-2.6.32.43/drivers/scsi/ips.h linux-2.6.32.43/drivers/scsi/ips.h
+--- linux-2.6.32.43/drivers/scsi/ips.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/ips.h 2011-08-05 20:33:55.000000000 -0400
+@@ -1027,7 +1027,7 @@ typedef struct {
+ int (*intr)(struct ips_ha *);
+ void (*enableint)(struct ips_ha *);
+ uint32_t (*statupd)(struct ips_ha *);
+-} ips_hw_func_t;
++} __no_const ips_hw_func_t;
+
+ typedef struct ips_ha {
+ uint8_t ha_id[IPS_MAX_CHANNELS+1];
+diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_disc.c linux-2.6.32.43/drivers/scsi/libfc/fc_disc.c
+--- linux-2.6.32.43/drivers/scsi/libfc/fc_disc.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_disc.c 2011-08-05 20:33:55.000000000 -0400
+@@ -715,16 +715,16 @@ int fc_disc_init(struct fc_lport *lport)
+ struct fc_disc *disc;
+
+ if (!lport->tt.disc_start)
+- lport->tt.disc_start = fc_disc_start;
++ *(void **)&lport->tt.disc_start = fc_disc_start;
+
+ if (!lport->tt.disc_stop)
+- lport->tt.disc_stop = fc_disc_stop;
++ *(void **)&lport->tt.disc_stop = fc_disc_stop;
+
+ if (!lport->tt.disc_stop_final)
+- lport->tt.disc_stop_final = fc_disc_stop_final;
++ *(void **)&lport->tt.disc_stop_final = fc_disc_stop_final;
+
+ if (!lport->tt.disc_recv_req)
+- lport->tt.disc_recv_req = fc_disc_recv_req;
++ *(void **)&lport->tt.disc_recv_req = fc_disc_recv_req;
+
+ disc = &lport->disc;
+ INIT_DELAYED_WORK(&disc->disc_work, fc_disc_timeout);
+diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_elsct.c linux-2.6.32.43/drivers/scsi/libfc/fc_elsct.c
+--- linux-2.6.32.43/drivers/scsi/libfc/fc_elsct.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_elsct.c 2011-08-05 20:33:55.000000000 -0400
+@@ -67,7 +67,7 @@ static struct fc_seq *fc_elsct_send(stru
+ int fc_elsct_init(struct fc_lport *lport)
+ {
+ if (!lport->tt.elsct_send)
+- lport->tt.elsct_send = fc_elsct_send;
++ *(void **)&lport->tt.elsct_send = fc_elsct_send;
+
+ return 0;
+ }
diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c
--- linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c 2011-08-05 20:33:55.000000000 -0400
@@ -86,12 +86,12 @@ struct fc_exch_mgr {
* all together if not used XXX
*/
@@ -34445,6 +36702,120 @@ diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_exch.c linux-2.6.32.43/drivers/
fc_frame_free(fp);
}
+@@ -2027,25 +2027,25 @@ EXPORT_SYMBOL(fc_exch_recv);
+ int fc_exch_init(struct fc_lport *lp)
+ {
+ if (!lp->tt.seq_start_next)
+- lp->tt.seq_start_next = fc_seq_start_next;
++ *(void **)&lp->tt.seq_start_next = fc_seq_start_next;
+
+ if (!lp->tt.exch_seq_send)
+- lp->tt.exch_seq_send = fc_exch_seq_send;
++ *(void **)&lp->tt.exch_seq_send = fc_exch_seq_send;
+
+ if (!lp->tt.seq_send)
+- lp->tt.seq_send = fc_seq_send;
++ *(void **)&lp->tt.seq_send = fc_seq_send;
+
+ if (!lp->tt.seq_els_rsp_send)
+- lp->tt.seq_els_rsp_send = fc_seq_els_rsp_send;
++ *(void **)&lp->tt.seq_els_rsp_send = fc_seq_els_rsp_send;
+
+ if (!lp->tt.exch_done)
+- lp->tt.exch_done = fc_exch_done;
++ *(void **)&lp->tt.exch_done = fc_exch_done;
+
+ if (!lp->tt.exch_mgr_reset)
+- lp->tt.exch_mgr_reset = fc_exch_mgr_reset;
++ *(void **)&lp->tt.exch_mgr_reset = fc_exch_mgr_reset;
+
+ if (!lp->tt.seq_exch_abort)
+- lp->tt.seq_exch_abort = fc_seq_exch_abort;
++ *(void **)&lp->tt.seq_exch_abort = fc_seq_exch_abort;
+
+ /*
+ * Initialize fc_cpu_mask and fc_cpu_order. The
+diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_fcp.c linux-2.6.32.43/drivers/scsi/libfc/fc_fcp.c
+--- linux-2.6.32.43/drivers/scsi/libfc/fc_fcp.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_fcp.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2105,13 +2105,13 @@ int fc_fcp_init(struct fc_lport *lp)
+ struct fc_fcp_internal *si;
+
+ if (!lp->tt.fcp_cmd_send)
+- lp->tt.fcp_cmd_send = fc_fcp_cmd_send;
++ *(void **)&lp->tt.fcp_cmd_send = fc_fcp_cmd_send;
+
+ if (!lp->tt.fcp_cleanup)
+- lp->tt.fcp_cleanup = fc_fcp_cleanup;
++ *(void **)&lp->tt.fcp_cleanup = fc_fcp_cleanup;
+
+ if (!lp->tt.fcp_abort_io)
+- lp->tt.fcp_abort_io = fc_fcp_abort_io;
++ *(void **)&lp->tt.fcp_abort_io = fc_fcp_abort_io;
+
+ si = kzalloc(sizeof(struct fc_fcp_internal), GFP_KERNEL);
+ if (!si)
+diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_lport.c linux-2.6.32.43/drivers/scsi/libfc/fc_lport.c
+--- linux-2.6.32.43/drivers/scsi/libfc/fc_lport.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_lport.c 2011-08-05 20:33:55.000000000 -0400
+@@ -569,7 +569,7 @@ int fc_lport_destroy(struct fc_lport *lp
+ mutex_lock(&lport->lp_mutex);
+ lport->state = LPORT_ST_DISABLED;
+ lport->link_up = 0;
+- lport->tt.frame_send = fc_frame_drop;
++ *(void **)&lport->tt.frame_send = fc_frame_drop;
+ mutex_unlock(&lport->lp_mutex);
+
+ lport->tt.fcp_abort_io(lport);
+@@ -1477,10 +1477,10 @@ EXPORT_SYMBOL(fc_lport_config);
+ int fc_lport_init(struct fc_lport *lport)
+ {
+ if (!lport->tt.lport_recv)
+- lport->tt.lport_recv = fc_lport_recv_req;
++ *(void **)&lport->tt.lport_recv = fc_lport_recv_req;
+
+ if (!lport->tt.lport_reset)
+- lport->tt.lport_reset = fc_lport_reset;
++ *(void **)&lport->tt.lport_reset = fc_lport_reset;
+
+ fc_host_port_type(lport->host) = FC_PORTTYPE_NPORT;
+ fc_host_node_name(lport->host) = lport->wwnn;
+diff -urNp linux-2.6.32.43/drivers/scsi/libfc/fc_rport.c linux-2.6.32.43/drivers/scsi/libfc/fc_rport.c
+--- linux-2.6.32.43/drivers/scsi/libfc/fc_rport.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/libfc/fc_rport.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1566,25 +1566,25 @@ static void fc_rport_flush_queue(void)
+ int fc_rport_init(struct fc_lport *lport)
+ {
+ if (!lport->tt.rport_lookup)
+- lport->tt.rport_lookup = fc_rport_lookup;
++ *(void **)&lport->tt.rport_lookup = fc_rport_lookup;
+
+ if (!lport->tt.rport_create)
+- lport->tt.rport_create = fc_rport_create;
++ *(void **)&lport->tt.rport_create = fc_rport_create;
+
+ if (!lport->tt.rport_login)
+- lport->tt.rport_login = fc_rport_login;
++ *(void **)&lport->tt.rport_login = fc_rport_login;
+
+ if (!lport->tt.rport_logoff)
+- lport->tt.rport_logoff = fc_rport_logoff;
++ *(void **)&lport->tt.rport_logoff = fc_rport_logoff;
+
+ if (!lport->tt.rport_recv_req)
+- lport->tt.rport_recv_req = fc_rport_recv_req;
++ *(void **)&lport->tt.rport_recv_req = fc_rport_recv_req;
+
+ if (!lport->tt.rport_flush_queue)
+- lport->tt.rport_flush_queue = fc_rport_flush_queue;
++ *(void **)&lport->tt.rport_flush_queue = fc_rport_flush_queue;
+
+ if (!lport->tt.rport_destroy)
+- lport->tt.rport_destroy = fc_rport_destroy;
++ *(void **)&lport->tt.rport_destroy = fc_rport_destroy;
+
+ return 0;
+ }
diff -urNp linux-2.6.32.43/drivers/scsi/libsas/sas_ata.c linux-2.6.32.43/drivers/scsi/libsas/sas_ata.c
--- linux-2.6.32.43/drivers/scsi/libsas/sas_ata.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/libsas/sas_ata.c 2011-04-23 12:56:11.000000000 -0400
@@ -34580,6 +36951,22 @@ diff -urNp linux-2.6.32.43/drivers/scsi/lpfc/lpfc.h linux-2.6.32.43/drivers/scsi
#endif
/* Used for deferred freeing of ELS data buffers */
+diff -urNp linux-2.6.32.43/drivers/scsi/lpfc/lpfc_init.c linux-2.6.32.43/drivers/scsi/lpfc/lpfc_init.c
+--- linux-2.6.32.43/drivers/scsi/lpfc/lpfc_init.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/lpfc/lpfc_init.c 2011-08-05 20:33:55.000000000 -0400
+@@ -8021,8 +8021,10 @@ lpfc_init(void)
+ printk(LPFC_COPYRIGHT "\n");
+
+ if (lpfc_enable_npiv) {
+- lpfc_transport_functions.vport_create = lpfc_vport_create;
+- lpfc_transport_functions.vport_delete = lpfc_vport_delete;
++ pax_open_kernel();
++ *(void **)&lpfc_transport_functions.vport_create = lpfc_vport_create;
++ *(void **)&lpfc_transport_functions.vport_delete = lpfc_vport_delete;
++ pax_close_kernel();
+ }
+ lpfc_transport_template =
+ fc_attach_transport(&lpfc_transport_functions);
diff -urNp linux-2.6.32.43/drivers/scsi/lpfc/lpfc_scsi.c linux-2.6.32.43/drivers/scsi/lpfc/lpfc_scsi.c
--- linux-2.6.32.43/drivers/scsi/lpfc/lpfc_scsi.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/lpfc/lpfc_scsi.c 2011-05-04 17:56:28.000000000 -0400
@@ -34734,6 +37121,18 @@ diff -urNp linux-2.6.32.43/drivers/scsi/pmcraid.h linux-2.6.32.43/drivers/scsi/p
/* To indicate add/delete/modify during CCN */
u8 change_detected;
+diff -urNp linux-2.6.32.43/drivers/scsi/qla2xxx/qla_def.h linux-2.6.32.43/drivers/scsi/qla2xxx/qla_def.h
+--- linux-2.6.32.43/drivers/scsi/qla2xxx/qla_def.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/scsi/qla2xxx/qla_def.h 2011-08-05 20:33:55.000000000 -0400
+@@ -2089,7 +2089,7 @@ struct isp_operations {
+
+ int (*get_flash_version) (struct scsi_qla_host *, void *);
+ int (*start_scsi) (srb_t *);
+-};
++} __no_const;
+
+ /* MSI-X Support *************************************************************/
+
diff -urNp linux-2.6.32.43/drivers/scsi/qla4xxx/ql4_def.h linux-2.6.32.43/drivers/scsi/qla4xxx/ql4_def.h
--- linux-2.6.32.43/drivers/scsi/qla4xxx/ql4_def.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/scsi/qla4xxx/ql4_def.h 2011-05-04 17:56:28.000000000 -0400
@@ -35011,6 +37410,20 @@ diff -urNp linux-2.6.32.43/drivers/spi/spi.c linux-2.6.32.43/drivers/spi/spi.c
static u8 *buf;
+diff -urNp linux-2.6.32.43/drivers/ssb/driver_gige.c linux-2.6.32.43/drivers/ssb/driver_gige.c
+--- linux-2.6.32.43/drivers/ssb/driver_gige.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/drivers/ssb/driver_gige.c 2011-08-05 20:33:55.000000000 -0400
+@@ -180,8 +180,8 @@ static int ssb_gige_probe(struct ssb_dev
+ dev->pci_controller.io_resource = &dev->io_resource;
+ dev->pci_controller.mem_resource = &dev->mem_resource;
+ dev->pci_controller.io_map_base = 0x800;
+- dev->pci_ops.read = ssb_gige_pci_read_config;
+- dev->pci_ops.write = ssb_gige_pci_write_config;
++ *(void **)&dev->pci_ops.read = ssb_gige_pci_read_config;
++ *(void **)&dev->pci_ops.write = ssb_gige_pci_write_config;
+
+ dev->io_resource.name = SSB_GIGE_IO_RES_NAME;
+ dev->io_resource.start = 0x800;
diff -urNp linux-2.6.32.43/drivers/staging/android/binder.c linux-2.6.32.43/drivers/staging/android/binder.c
--- linux-2.6.32.43/drivers/staging/android/binder.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/drivers/staging/android/binder.c 2011-04-17 15:56:46.000000000 -0400
@@ -36434,7 +38847,7 @@ diff -urNp linux-2.6.32.43/drivers/video/uvesafb.c linux-2.6.32.43/drivers/video
framebuffer_release(info);
diff -urNp linux-2.6.32.43/drivers/video/vesafb.c linux-2.6.32.43/drivers/video/vesafb.c
--- linux-2.6.32.43/drivers/video/vesafb.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/drivers/video/vesafb.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/drivers/video/vesafb.c 2011-08-05 20:33:55.000000000 -0400
@@ -9,6 +9,7 @@
*/
@@ -36501,17 +38914,16 @@ diff -urNp linux-2.6.32.43/drivers/video/vesafb.c linux-2.6.32.43/drivers/video/
if (ypan || pmi_setpal) {
unsigned short *pmi_base;
-- pmi_base = (unsigned short*)phys_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
++
+ pmi_base = (unsigned short*)phys_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
- pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
- pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
+
-+ pmi_base = (unsigned short*)phys_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
-+
+#if defined(CONFIG_MODULES) && defined(CONFIG_PAX_KERNEXEC)
+ pax_open_kernel();
+ memcpy(pmi_code, pmi_base, screen_info.vesapm_size);
+#else
-+ pmi_code = pmi_base;
++ pmi_code = pmi_base;
+#endif
+
+ pmi_start = (void*)((char*)pmi_code + pmi_base[1]);
@@ -40727,62 +43139,28 @@ diff -urNp linux-2.6.32.43/fs/fs_struct.c linux-2.6.32.43/fs/fs_struct.c
task_unlock(current);
diff -urNp linux-2.6.32.43/fs/fuse/cuse.c linux-2.6.32.43/fs/fuse/cuse.c
--- linux-2.6.32.43/fs/fuse/cuse.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/fs/fuse/cuse.c 2011-04-17 15:56:46.000000000 -0400
-@@ -528,8 +528,18 @@ static int cuse_channel_release(struct i
- return rc;
- }
-
--static struct file_operations cuse_channel_fops; /* initialized during init */
--
-+static const struct file_operations cuse_channel_fops = { /* initialized during init */
-+ .owner = THIS_MODULE,
-+ .llseek = no_llseek,
-+ .read = do_sync_read,
-+ .aio_read = fuse_dev_read,
-+ .write = do_sync_write,
-+ .aio_write = fuse_dev_write,
-+ .poll = fuse_dev_poll,
-+ .open = cuse_channel_open,
-+ .release = cuse_channel_release,
-+ .fasync = fuse_dev_fasync,
-+};
-
- /**************************************************************************
- * Misc stuff and module initializatiion
-@@ -575,12 +585,6 @@ static int __init cuse_init(void)
- for (i = 0; i < CUSE_CONNTBL_LEN; i++)
++++ linux-2.6.32.43/fs/fuse/cuse.c 2011-08-05 20:33:55.000000000 -0400
+@@ -576,10 +576,12 @@ static int __init cuse_init(void)
INIT_LIST_HEAD(&cuse_conntbl[i]);
-- /* inherit and extend fuse_dev_operations */
+ /* inherit and extend fuse_dev_operations */
- cuse_channel_fops = fuse_dev_operations;
- cuse_channel_fops.owner = THIS_MODULE;
- cuse_channel_fops.open = cuse_channel_open;
- cuse_channel_fops.release = cuse_channel_release;
--
++ pax_open_kernel();
++ memcpy((void *)&cuse_channel_fops, &fuse_dev_operations, sizeof(fuse_dev_operations));
++ *(void **)&cuse_channel_fops.owner = THIS_MODULE;
++ *(void **)&cuse_channel_fops.open = cuse_channel_open;
++ *(void **)&cuse_channel_fops.release = cuse_channel_release;
++ pax_close_kernel();
+
cuse_class = class_create(THIS_MODULE, "cuse");
if (IS_ERR(cuse_class))
- return PTR_ERR(cuse_class);
diff -urNp linux-2.6.32.43/fs/fuse/dev.c linux-2.6.32.43/fs/fuse/dev.c
--- linux-2.6.32.43/fs/fuse/dev.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/fs/fuse/dev.c 2011-04-17 15:56:46.000000000 -0400
-@@ -745,7 +745,7 @@ __releases(&fc->lock)
- * request_end(). Otherwise add it to the processing list, and set
- * the 'sent' flag.
- */
--static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
-+ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
- unsigned long nr_segs, loff_t pos)
- {
- int err;
-@@ -827,6 +827,7 @@ static ssize_t fuse_dev_read(struct kioc
- spin_unlock(&fc->lock);
- return err;
- }
-+EXPORT_SYMBOL_GPL(fuse_dev_read);
-
- static int fuse_notify_poll(struct fuse_conn *fc, unsigned int size,
- struct fuse_copy_state *cs)
-@@ -885,7 +886,7 @@ static int fuse_notify_inval_entry(struc
++++ linux-2.6.32.43/fs/fuse/dev.c 2011-08-05 20:33:55.000000000 -0400
+@@ -885,7 +885,7 @@ static int fuse_notify_inval_entry(struc
{
struct fuse_notify_inval_entry_out outarg;
int err = -EINVAL;
@@ -40791,7 +43169,7 @@ diff -urNp linux-2.6.32.43/fs/fuse/dev.c linux-2.6.32.43/fs/fuse/dev.c
struct qstr name;
if (size < sizeof(outarg))
-@@ -899,6 +900,11 @@ static int fuse_notify_inval_entry(struc
+@@ -899,6 +899,11 @@ static int fuse_notify_inval_entry(struc
if (outarg.namelen > FUSE_NAME_MAX)
goto err;
@@ -40803,7 +43181,7 @@ diff -urNp linux-2.6.32.43/fs/fuse/dev.c linux-2.6.32.43/fs/fuse/dev.c
name.name = buf;
name.len = outarg.namelen;
err = fuse_copy_one(cs, buf, outarg.namelen + 1);
-@@ -910,17 +916,15 @@ static int fuse_notify_inval_entry(struc
+@@ -910,17 +915,15 @@ static int fuse_notify_inval_entry(struc
down_read(&fc->killsb);
err = -ENOENT;
@@ -40825,51 +43203,6 @@ diff -urNp linux-2.6.32.43/fs/fuse/dev.c linux-2.6.32.43/fs/fuse/dev.c
return err;
}
-@@ -987,7 +991,7 @@ static int copy_out_args(struct fuse_cop
- * it from the list and copy the rest of the buffer to the request.
- * The request is finished by calling request_end()
- */
--static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
-+ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
- unsigned long nr_segs, loff_t pos)
- {
- int err;
-@@ -1083,8 +1087,9 @@ static ssize_t fuse_dev_write(struct kio
- fuse_copy_finish(&cs);
- return err;
- }
-+EXPORT_SYMBOL_GPL(fuse_dev_write);
-
--static unsigned fuse_dev_poll(struct file *file, poll_table *wait)
-+unsigned fuse_dev_poll(struct file *file, poll_table *wait)
- {
- unsigned mask = POLLOUT | POLLWRNORM;
- struct fuse_conn *fc = fuse_get_conn(file);
-@@ -1102,6 +1107,7 @@ static unsigned fuse_dev_poll(struct fil
-
- return mask;
- }
-+EXPORT_SYMBOL_GPL(fuse_dev_poll);
-
- /*
- * Abort all requests on the given list (pending or processing)
-@@ -1218,7 +1224,7 @@ int fuse_dev_release(struct inode *inode
- }
- EXPORT_SYMBOL_GPL(fuse_dev_release);
-
--static int fuse_dev_fasync(int fd, struct file *file, int on)
-+int fuse_dev_fasync(int fd, struct file *file, int on)
- {
- struct fuse_conn *fc = fuse_get_conn(file);
- if (!fc)
-@@ -1227,6 +1233,7 @@ static int fuse_dev_fasync(int fd, struc
- /* No locking - fasync_helper does its own locking */
- return fasync_helper(fd, file, on, &fc->fasync);
- }
-+EXPORT_SYMBOL_GPL(fuse_dev_fasync);
-
- const struct file_operations fuse_dev_operations = {
- .owner = THIS_MODULE,
diff -urNp linux-2.6.32.43/fs/fuse/dir.c linux-2.6.32.43/fs/fuse/dir.c
--- linux-2.6.32.43/fs/fuse/dir.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/fs/fuse/dir.c 2011-04-17 15:56:46.000000000 -0400
@@ -40882,26 +43215,6 @@ diff -urNp linux-2.6.32.43/fs/fuse/dir.c linux-2.6.32.43/fs/fuse/dir.c
{
if (!IS_ERR(link))
free_page((unsigned long) link);
-diff -urNp linux-2.6.32.43/fs/fuse/fuse_i.h linux-2.6.32.43/fs/fuse/fuse_i.h
---- linux-2.6.32.43/fs/fuse/fuse_i.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/fs/fuse/fuse_i.h 2011-04-17 15:56:46.000000000 -0400
-@@ -525,6 +525,16 @@ extern const struct file_operations fuse
-
- extern const struct dentry_operations fuse_dentry_operations;
-
-+extern ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
-+ unsigned long nr_segs, loff_t pos);
-+
-+extern ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
-+ unsigned long nr_segs, loff_t pos);
-+
-+extern unsigned fuse_dev_poll(struct file *file, poll_table *wait);
-+
-+extern int fuse_dev_fasync(int fd, struct file *file, int on);
-+
- /**
- * Inode to nodeid comparison.
- */
diff -urNp linux-2.6.32.43/fs/gfs2/ops_inode.c linux-2.6.32.43/fs/gfs2/ops_inode.c
--- linux-2.6.32.43/fs/gfs2/ops_inode.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/fs/gfs2/ops_inode.c 2011-05-16 21:46:57.000000000 -0400
@@ -41316,6 +43629,21 @@ diff -urNp linux-2.6.32.43/fs/locks.c linux-2.6.32.43/fs/locks.c
}
lock_kernel();
+diff -urNp linux-2.6.32.43/fs/mbcache.c linux-2.6.32.43/fs/mbcache.c
+--- linux-2.6.32.43/fs/mbcache.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/fs/mbcache.c 2011-08-05 20:33:55.000000000 -0400
+@@ -266,9 +266,9 @@ mb_cache_create(const char *name, struct
+ if (!cache)
+ goto fail;
+ cache->c_name = name;
+- cache->c_op.free = NULL;
++ *(void **)&cache->c_op.free = NULL;
+ if (cache_op)
+- cache->c_op.free = cache_op->free;
++ *(void **)&cache->c_op.free = cache_op->free;
+ atomic_set(&cache->c_entry_count, 0);
+ cache->c_bucket_bits = bucket_bits;
+ #ifdef MB_CACHE_INDEXES_COUNT
diff -urNp linux-2.6.32.43/fs/namei.c linux-2.6.32.43/fs/namei.c
--- linux-2.6.32.43/fs/namei.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/fs/namei.c 2011-05-16 21:46:57.000000000 -0400
@@ -43870,7 +46198,7 @@ diff -urNp linux-2.6.32.43/fs/select.c linux-2.6.32.43/fs/select.c
diff -urNp linux-2.6.32.43/fs/seq_file.c linux-2.6.32.43/fs/seq_file.c
--- linux-2.6.32.43/fs/seq_file.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/fs/seq_file.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/fs/seq_file.c 2011-08-05 20:33:55.000000000 -0400
@@ -76,7 +76,8 @@ static int traverse(struct seq_file *m,
return 0;
}
@@ -43911,6 +46239,57 @@ diff -urNp linux-2.6.32.43/fs/seq_file.c linux-2.6.32.43/fs/seq_file.c
if (!m->buf)
goto Enomem;
m->count = 0;
+@@ -555,10 +559,10 @@ int single_open(struct file *file, int (
+ int res = -ENOMEM;
+
+ if (op) {
+- op->start = single_start;
+- op->next = single_next;
+- op->stop = single_stop;
+- op->show = show;
++ *(void **)&op->start = single_start;
++ *(void **)&op->next = single_next;
++ *(void **)&op->stop = single_stop;
++ *(void **)&op->show = show;
+ res = seq_open(file, op);
+ if (!res)
+ ((struct seq_file *)file->private_data)->private = data;
+diff -urNp linux-2.6.32.43/fs/smbfs/proc.c linux-2.6.32.43/fs/smbfs/proc.c
+--- linux-2.6.32.43/fs/smbfs/proc.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/fs/smbfs/proc.c 2011-08-05 20:33:55.000000000 -0400
+@@ -266,9 +266,9 @@ int smb_setcodepage(struct smb_sb_info *
+
+ out:
+ if (server->local_nls != NULL && server->remote_nls != NULL)
+- server->ops->convert = convert_cp;
++ *(void **)&server->ops->convert = convert_cp;
+ else
+- server->ops->convert = convert_memcpy;
++ *(void **)&server->ops->convert = convert_memcpy;
+
+ smb_unlock_server(server);
+ return n;
+@@ -933,9 +933,9 @@ smb_newconn(struct smb_sb_info *server,
+
+ /* FIXME: the win9x code wants to modify these ... (seek/trunc bug) */
+ if (server->mnt->flags & SMB_MOUNT_OLDATTR) {
+- server->ops->getattr = smb_proc_getattr_core;
++ *(void **)&server->ops->getattr = smb_proc_getattr_core;
+ } else if (server->mnt->flags & SMB_MOUNT_DIRATTR) {
+- server->ops->getattr = smb_proc_getattr_ff;
++ *(void **)&server->ops->getattr = smb_proc_getattr_ff;
+ }
+
+ /* Decode server capabilities */
+@@ -3439,7 +3439,7 @@ out:
+ static void
+ install_ops(struct smb_ops *dst, struct smb_ops *src)
+ {
+- memcpy(dst, src, sizeof(void *) * SMB_OPS_NUM_STATIC);
++ memcpy((void *)dst, src, sizeof(void *) * SMB_OPS_NUM_STATIC);
+ }
+
+ /* < LANMAN2 */
diff -urNp linux-2.6.32.43/fs/smbfs/symlink.c linux-2.6.32.43/fs/smbfs/symlink.c
--- linux-2.6.32.43/fs/smbfs/symlink.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/fs/smbfs/symlink.c 2011-04-17 15:56:46.000000000 -0400
@@ -54278,6 +56657,18 @@ diff -urNp linux-2.6.32.43/grsecurity/Makefile linux-2.6.32.43/grsecurity/Makefi
+ @-chmod -f 700 .
+ @echo ' grsec: protected kernel image paths'
+endif
+diff -urNp linux-2.6.32.43/include/acpi/acpi_bus.h linux-2.6.32.43/include/acpi/acpi_bus.h
+--- linux-2.6.32.43/include/acpi/acpi_bus.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/acpi/acpi_bus.h 2011-08-05 20:33:55.000000000 -0400
+@@ -107,7 +107,7 @@ struct acpi_device_ops {
+ acpi_op_bind bind;
+ acpi_op_unbind unbind;
+ acpi_op_notify notify;
+-};
++} __no_const;
+
+ #define ACPI_DRIVER_ALL_NOTIFY_EVENTS 0x1 /* system AND device events */
+
diff -urNp linux-2.6.32.43/include/acpi/acpi_drivers.h linux-2.6.32.43/include/acpi/acpi_drivers.h
--- linux-2.6.32.43/include/acpi/acpi_drivers.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/acpi/acpi_drivers.h 2011-04-17 15:56:46.000000000 -0400
@@ -54892,6 +57283,27 @@ diff -urNp linux-2.6.32.43/include/asm-generic/vmlinux.lds.h linux-2.6.32.43/inc
/**
* PERCPU - define output section for percpu area, simple version
+diff -urNp linux-2.6.32.43/include/drm/drm_crtc_helper.h linux-2.6.32.43/include/drm/drm_crtc_helper.h
+--- linux-2.6.32.43/include/drm/drm_crtc_helper.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/drm/drm_crtc_helper.h 2011-08-05 20:33:55.000000000 -0400
+@@ -64,7 +64,7 @@ struct drm_crtc_helper_funcs {
+
+ /* reload the current crtc LUT */
+ void (*load_lut)(struct drm_crtc *crtc);
+-};
++} __no_const;
+
+ struct drm_encoder_helper_funcs {
+ void (*dpms)(struct drm_encoder *encoder, int mode);
+@@ -85,7 +85,7 @@ struct drm_encoder_helper_funcs {
+ struct drm_connector *connector);
+ /* disable encoder when not in use - more explicit than dpms off */
+ void (*disable)(struct drm_encoder *encoder);
+-};
++} __no_const;
+
+ struct drm_connector_helper_funcs {
+ int (*get_modes)(struct drm_connector *connector);
diff -urNp linux-2.6.32.43/include/drm/drmP.h linux-2.6.32.43/include/drm/drmP.h
--- linux-2.6.32.43/include/drm/drmP.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/drm/drmP.h 2011-04-17 15:56:46.000000000 -0400
@@ -54954,6 +57366,18 @@ diff -urNp linux-2.6.32.43/include/drm/drmP.h linux-2.6.32.43/include/drm/drmP.h
uint32_t gtt_total;
uint32_t invalidate_domains; /* domains pending invalidation */
uint32_t flush_domains; /* domains pending flush */
+diff -urNp linux-2.6.32.43/include/drm/ttm/ttm_memory.h linux-2.6.32.43/include/drm/ttm/ttm_memory.h
+--- linux-2.6.32.43/include/drm/ttm/ttm_memory.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/drm/ttm/ttm_memory.h 2011-08-05 20:33:55.000000000 -0400
+@@ -47,7 +47,7 @@
+
+ struct ttm_mem_shrink {
+ int (*do_shrink) (struct ttm_mem_shrink *);
+-};
++} __no_const;
+
+ /**
+ * struct ttm_mem_global - Global memory accounting structure.
diff -urNp linux-2.6.32.43/include/linux/a.out.h linux-2.6.32.43/include/linux/a.out.h
--- linux-2.6.32.43/include/linux/a.out.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/a.out.h 2011-04-17 15:56:46.000000000 -0400
@@ -55179,8 +57603,8 @@ diff -urNp linux-2.6.32.43/include/linux/capability.h linux-2.6.32.43/include/li
struct dentry;
diff -urNp linux-2.6.32.43/include/linux/compiler-gcc4.h linux-2.6.32.43/include/linux/compiler-gcc4.h
--- linux-2.6.32.43/include/linux/compiler-gcc4.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/compiler-gcc4.h 2011-04-17 15:56:46.000000000 -0400
-@@ -36,4 +36,8 @@
++++ linux-2.6.32.43/include/linux/compiler-gcc4.h 2011-08-05 20:33:55.000000000 -0400
+@@ -36,4 +36,13 @@
the kernel context */
#define __cold __attribute__((__cold__))
@@ -55188,34 +57612,50 @@ diff -urNp linux-2.6.32.43/include/linux/compiler-gcc4.h linux-2.6.32.43/include
+#define __bos(ptr, arg) __builtin_object_size((ptr), (arg))
+#define __bos0(ptr) __bos((ptr), 0)
+#define __bos1(ptr) __bos((ptr), 1)
++
++#if __GNUC_MINOR__ >= 5
++#define __no_const __attribute__((no_const))
++#endif
++
#endif
diff -urNp linux-2.6.32.43/include/linux/compiler.h linux-2.6.32.43/include/linux/compiler.h
--- linux-2.6.32.43/include/linux/compiler.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/compiler.h 2011-04-17 15:56:46.000000000 -0400
-@@ -256,6 +256,22 @@ void ftrace_likely_update(struct ftrace_
++++ linux-2.6.32.43/include/linux/compiler.h 2011-08-05 20:33:55.000000000 -0400
+@@ -247,6 +247,10 @@ void ftrace_likely_update(struct ftrace_
+ # define __attribute_const__ /* unimplemented */
+ #endif
+
++#ifndef __no_const
++# define __no_const
++#endif
++
+ /*
+ * Tell gcc if a function is cold. The compiler will assume any path
+ * directly leading to the call is unlikely.
+@@ -256,6 +260,22 @@ void ftrace_likely_update(struct ftrace_
#define __cold
#endif
+#ifndef __alloc_size
-+#define __alloc_size
++#define __alloc_size(...)
+#endif
+
+#ifndef __bos
-+#define __bos
++#define __bos(ptr, arg)
+#endif
+
+#ifndef __bos0
-+#define __bos0
++#define __bos0(ptr)
+#endif
+
+#ifndef __bos1
-+#define __bos1
++#define __bos1(ptr)
+#endif
+
/* Simple shorthand for a section definition */
#ifndef __section
# define __section(S) __attribute__ ((__section__(#S)))
-@@ -278,6 +294,7 @@ void ftrace_likely_update(struct ftrace_
+@@ -278,6 +298,7 @@ void ftrace_likely_update(struct ftrace_
* use is to mediate communication between process-level code and irq/NMI
* handlers, all running on the same CPU.
*/
@@ -55224,6 +57664,34 @@ diff -urNp linux-2.6.32.43/include/linux/compiler.h linux-2.6.32.43/include/linu
+#define ACCESS_ONCE_RW(x) (*(volatile typeof(x) *)&(x))
#endif /* __LINUX_COMPILER_H */
+diff -urNp linux-2.6.32.43/include/linux/crypto.h linux-2.6.32.43/include/linux/crypto.h
+--- linux-2.6.32.43/include/linux/crypto.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/crypto.h 2011-08-05 20:33:55.000000000 -0400
+@@ -394,7 +394,7 @@ struct cipher_tfm {
+ const u8 *key, unsigned int keylen);
+ void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
+ void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
+-};
++} __no_const;
+
+ struct hash_tfm {
+ int (*init)(struct hash_desc *desc);
+@@ -415,13 +415,13 @@ struct compress_tfm {
+ int (*cot_decompress)(struct crypto_tfm *tfm,
+ const u8 *src, unsigned int slen,
+ u8 *dst, unsigned int *dlen);
+-};
++} __no_const;
+
+ struct rng_tfm {
+ int (*rng_gen_random)(struct crypto_rng *tfm, u8 *rdata,
+ unsigned int dlen);
+ int (*rng_reset)(struct crypto_rng *tfm, u8 *seed, unsigned int slen);
+-};
++} __no_const;
+
+ #define crt_ablkcipher crt_u.ablkcipher
+ #define crt_aead crt_u.aead
diff -urNp linux-2.6.32.43/include/linux/dcache.h linux-2.6.32.43/include/linux/dcache.h
--- linux-2.6.32.43/include/linux/dcache.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/dcache.h 2011-04-23 13:34:46.000000000 -0400
@@ -55427,7 +57895,7 @@ diff -urNp linux-2.6.32.43/include/linux/fscache-cache.h linux-2.6.32.43/include
fscache_set_op_state(op, "Init");
diff -urNp linux-2.6.32.43/include/linux/fs.h linux-2.6.32.43/include/linux/fs.h
--- linux-2.6.32.43/include/linux/fs.h 2011-07-13 17:23:04.000000000 -0400
-+++ linux-2.6.32.43/include/linux/fs.h 2011-07-13 17:23:19.000000000 -0400
++++ linux-2.6.32.43/include/linux/fs.h 2011-08-05 20:33:55.000000000 -0400
@@ -90,6 +90,11 @@ struct inodes_stat_t {
/* Expect random access pattern */
#define FMODE_RANDOM ((__force fmode_t)4096)
@@ -55538,6 +58006,15 @@ diff -urNp linux-2.6.32.43/include/linux/fs.h linux-2.6.32.43/include/linux/fs.h
* array */
};
int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical,
+@@ -1486,7 +1491,7 @@ struct block_device_operations;
+ * can be called without the big kernel lock held in all filesystems.
+ */
+ struct file_operations {
+- struct module *owner;
++ struct module * const owner;
+ loff_t (*llseek) (struct file *, loff_t, int);
+ ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
+ ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
@@ -1559,30 +1564,30 @@ extern ssize_t vfs_writev(struct file *,
unsigned long, loff_t *);
@@ -56439,8 +58916,8 @@ diff -urNp linux-2.6.32.43/include/linux/grmsg.h linux-2.6.32.43/include/linux/g
+#define GR_INIT_TRANSFER_MSG "persistent special role transferred privilege to init by "
diff -urNp linux-2.6.32.43/include/linux/grsecurity.h linux-2.6.32.43/include/linux/grsecurity.h
--- linux-2.6.32.43/include/linux/grsecurity.h 1969-12-31 19:00:00.000000000 -0500
-+++ linux-2.6.32.43/include/linux/grsecurity.h 2011-07-14 20:35:17.000000000 -0400
-@@ -0,0 +1,215 @@
++++ linux-2.6.32.43/include/linux/grsecurity.h 2011-08-05 19:53:46.000000000 -0400
+@@ -0,0 +1,218 @@
+#ifndef GR_SECURITY_H
+#define GR_SECURITY_H
+#include <linux/fs.h>
@@ -56450,6 +58927,9 @@ diff -urNp linux-2.6.32.43/include/linux/grsecurity.h linux-2.6.32.43/include/li
+#include <linux/compat.h>
+
+/* notify of brain-dead configs */
++#if defined(CONFIG_GRKERNSEC_PROC_USER) && defined(CONFIG_GRKERNSEC_PROC_USERGROUP)
++#error "CONFIG_GRKERNSEC_PROC_USER and CONFIG_GRKERNSEC_PROC_USERGROUP cannot both be enabled."
++#endif
+#if defined(CONFIG_PAX_NOEXEC) && !defined(CONFIG_PAX_PAGEEXEC) && !defined(CONFIG_PAX_SEGMEXEC) && !defined(CONFIG_PAX_KERNEXEC)
+#error "CONFIG_PAX_NOEXEC enabled, but PAGEEXEC, SEGMEXEC, and KERNEXEC are disabled."
+#endif
@@ -56726,6 +59206,18 @@ diff -urNp linux-2.6.32.43/include/linux/init_task.h linux-2.6.32.43/include/lin
.fs = &init_fs, \
.files = &init_files, \
.signal = &init_signals, \
+diff -urNp linux-2.6.32.43/include/linux/intel-iommu.h linux-2.6.32.43/include/linux/intel-iommu.h
+--- linux-2.6.32.43/include/linux/intel-iommu.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/intel-iommu.h 2011-08-05 20:33:55.000000000 -0400
+@@ -296,7 +296,7 @@ struct iommu_flush {
+ u8 fm, u64 type);
+ void (*flush_iotlb)(struct intel_iommu *iommu, u16 did, u64 addr,
+ unsigned int size_order, u64 type);
+-};
++} __no_const;
+
+ enum {
+ SR_DMAR_FECTL_REG,
diff -urNp linux-2.6.32.43/include/linux/interrupt.h linux-2.6.32.43/include/linux/interrupt.h
--- linux-2.6.32.43/include/linux/interrupt.h 2011-06-25 12:55:35.000000000 -0400
+++ linux-2.6.32.43/include/linux/interrupt.h 2011-06-25 12:56:37.000000000 -0400
@@ -56801,7 +59293,7 @@ diff -urNp linux-2.6.32.43/include/linux/kallsyms.h linux-2.6.32.43/include/linu
static void __check_printsym_format(const char *fmt, ...)
diff -urNp linux-2.6.32.43/include/linux/kgdb.h linux-2.6.32.43/include/linux/kgdb.h
--- linux-2.6.32.43/include/linux/kgdb.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/kgdb.h 2011-05-04 17:56:20.000000000 -0400
++++ linux-2.6.32.43/include/linux/kgdb.h 2011-08-05 20:33:55.000000000 -0400
@@ -74,8 +74,8 @@ void kgdb_breakpoint(void);
extern int kgdb_connected;
@@ -56813,6 +59305,17 @@ diff -urNp linux-2.6.32.43/include/linux/kgdb.h linux-2.6.32.43/include/linux/kg
extern struct task_struct *kgdb_usethread;
extern struct task_struct *kgdb_contthread;
+@@ -226,8 +226,8 @@ extern int kgdb_arch_remove_breakpoint(u
+ * hardware debug registers.
+ */
+ struct kgdb_arch {
+- unsigned char gdb_bpt_instr[BREAK_INSTR_SIZE];
+- unsigned long flags;
++ const unsigned char gdb_bpt_instr[BREAK_INSTR_SIZE];
++ const unsigned long flags;
+
+ int (*set_breakpoint)(unsigned long, char *);
+ int (*remove_breakpoint)(unsigned long, char *);
@@ -251,20 +251,20 @@ struct kgdb_arch {
*/
struct kgdb_io {
@@ -56929,7 +59432,7 @@ diff -urNp linux-2.6.32.43/include/linux/kvm_host.h linux-2.6.32.43/include/linu
int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu);
diff -urNp linux-2.6.32.43/include/linux/libata.h linux-2.6.32.43/include/linux/libata.h
--- linux-2.6.32.43/include/linux/libata.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/libata.h 2011-04-23 12:56:11.000000000 -0400
++++ linux-2.6.32.43/include/linux/libata.h 2011-08-05 20:33:55.000000000 -0400
@@ -525,11 +525,11 @@ struct ata_ioports {
struct ata_host {
@@ -56953,6 +59456,15 @@ diff -urNp linux-2.6.32.43/include/linux/libata.h linux-2.6.32.43/include/linux/
spinlock_t *lock;
/* Flags owned by the EH context. Only EH should touch these once the
port is active */
+@@ -883,7 +883,7 @@ struct ata_port_operations {
+ * ->inherits must be the last field and all the preceding
+ * fields must be pointers.
+ */
+- const struct ata_port_operations *inherits;
++ const struct ata_port_operations * const inherits;
+ };
+
+ struct ata_port_info {
@@ -892,7 +892,7 @@ struct ata_port_info {
unsigned long pio_mask;
unsigned long mwdma_mask;
@@ -57000,6 +59512,30 @@ diff -urNp linux-2.6.32.43/include/linux/lockd/bind.h linux-2.6.32.43/include/li
/*
* Similar to nfs_client_initdata, but without the NFS-specific
+diff -urNp linux-2.6.32.43/include/linux/mca.h linux-2.6.32.43/include/linux/mca.h
+--- linux-2.6.32.43/include/linux/mca.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/mca.h 2011-08-05 20:33:55.000000000 -0400
+@@ -80,7 +80,7 @@ struct mca_bus_accessor_functions {
+ int region);
+ void * (*mca_transform_memory)(struct mca_device *,
+ void *memory);
+-};
++} __no_const;
+
+ struct mca_bus {
+ u64 default_dma_mask;
+diff -urNp linux-2.6.32.43/include/linux/memory.h linux-2.6.32.43/include/linux/memory.h
+--- linux-2.6.32.43/include/linux/memory.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/memory.h 2011-08-05 20:33:55.000000000 -0400
+@@ -108,7 +108,7 @@ struct memory_accessor {
+ size_t count);
+ ssize_t (*write)(struct memory_accessor *, const char *buf,
+ off_t offset, size_t count);
+-};
++} __no_const;
+
+ /*
+ * Kernel text modification mutex, used for code patching. Users of this lock
diff -urNp linux-2.6.32.43/include/linux/mm.h linux-2.6.32.43/include/linux/mm.h
--- linux-2.6.32.43/include/linux/mm.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/mm.h 2011-04-17 15:56:46.000000000 -0400
@@ -57173,8 +59709,16 @@ diff -urNp linux-2.6.32.43/include/linux/mod_devicetable.h linux-2.6.32.43/inclu
__u16 bus;
diff -urNp linux-2.6.32.43/include/linux/module.h linux-2.6.32.43/include/linux/module.h
--- linux-2.6.32.43/include/linux/module.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/module.h 2011-04-17 15:56:46.000000000 -0400
-@@ -287,16 +287,16 @@ struct module
++++ linux-2.6.32.43/include/linux/module.h 2011-08-05 20:33:55.000000000 -0400
+@@ -16,6 +16,7 @@
+ #include <linux/kobject.h>
+ #include <linux/moduleparam.h>
+ #include <linux/tracepoint.h>
++#include <linux/fs.h>
+
+ #include <asm/local.h>
+ #include <asm/module.h>
+@@ -287,16 +288,16 @@ struct module
int (*init)(void);
/* If this is non-NULL, vfree after init() returns */
@@ -57195,7 +59739,18 @@ diff -urNp linux-2.6.32.43/include/linux/module.h linux-2.6.32.43/include/linux/
/* Arch-specific module values */
struct mod_arch_specific arch;
-@@ -393,16 +393,46 @@ struct module *__module_address(unsigned
+@@ -345,6 +346,10 @@ struct module
+ #ifdef CONFIG_EVENT_TRACING
+ struct ftrace_event_call *trace_events;
+ unsigned int num_trace_events;
++ struct file_operations trace_id;
++ struct file_operations trace_enable;
++ struct file_operations trace_format;
++ struct file_operations trace_filter;
+ #endif
+ #ifdef CONFIG_FTRACE_MCOUNT_RECORD
+ unsigned long *ftrace_callsites;
+@@ -393,16 +398,46 @@ struct module *__module_address(unsigned
bool is_module_address(unsigned long addr);
bool is_module_text_address(unsigned long addr);
@@ -57440,9 +59995,33 @@ diff -urNp linux-2.6.32.43/include/linux/poison.h linux-2.6.32.43/include/linux/
/********** include/linux/timer.h **********/
/*
+diff -urNp linux-2.6.32.43/include/linux/posix-timers.h linux-2.6.32.43/include/linux/posix-timers.h
+--- linux-2.6.32.43/include/linux/posix-timers.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/posix-timers.h 2011-08-05 20:33:55.000000000 -0400
+@@ -67,7 +67,7 @@ struct k_itimer {
+ };
+
+ struct k_clock {
+- int res; /* in nanoseconds */
++ const int res; /* in nanoseconds */
+ int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
+ int (*clock_set) (const clockid_t which_clock, struct timespec * tp);
+ int (*clock_get) (const clockid_t which_clock, struct timespec * tp);
+diff -urNp linux-2.6.32.43/include/linux/preempt.h linux-2.6.32.43/include/linux/preempt.h
+--- linux-2.6.32.43/include/linux/preempt.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/preempt.h 2011-08-05 20:33:55.000000000 -0400
+@@ -110,7 +110,7 @@ struct preempt_ops {
+ void (*sched_in)(struct preempt_notifier *notifier, int cpu);
+ void (*sched_out)(struct preempt_notifier *notifier,
+ struct task_struct *next);
+-};
++} __no_const;
+
+ /**
+ * preempt_notifier - key for installing preemption notifiers
diff -urNp linux-2.6.32.43/include/linux/proc_fs.h linux-2.6.32.43/include/linux/proc_fs.h
--- linux-2.6.32.43/include/linux/proc_fs.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/proc_fs.h 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/include/linux/proc_fs.h 2011-08-05 20:33:55.000000000 -0400
@@ -155,6 +155,19 @@ static inline struct proc_dir_entry *pro
return proc_create_data(name, mode, parent, proc_fops, NULL);
}
@@ -57463,6 +60042,15 @@ diff -urNp linux-2.6.32.43/include/linux/proc_fs.h linux-2.6.32.43/include/linux
static inline struct proc_dir_entry *create_proc_read_entry(const char *name,
mode_t mode, struct proc_dir_entry *base,
read_proc_t *read_proc, void * data)
+@@ -256,7 +269,7 @@ union proc_op {
+ int (*proc_show)(struct seq_file *m,
+ struct pid_namespace *ns, struct pid *pid,
+ struct task_struct *task);
+-};
++} __no_const;
+
+ struct ctl_table_header;
+ struct ctl_table;
diff -urNp linux-2.6.32.43/include/linux/ptrace.h linux-2.6.32.43/include/linux/ptrace.h
--- linux-2.6.32.43/include/linux/ptrace.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/ptrace.h 2011-04-17 15:56:46.000000000 -0400
@@ -57593,9 +60181,21 @@ diff -urNp linux-2.6.32.43/include/linux/reiserfs_fs_sb.h linux-2.6.32.43/includ
// tree gets re-balanced
unsigned long s_properties; /* File system properties. Currently holds
on-disk FS format */
+diff -urNp linux-2.6.32.43/include/linux/relay.h linux-2.6.32.43/include/linux/relay.h
+--- linux-2.6.32.43/include/linux/relay.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/relay.h 2011-08-05 20:33:55.000000000 -0400
+@@ -159,7 +159,7 @@ struct rchan_callbacks
+ * The callback should return 0 if successful, negative if not.
+ */
+ int (*remove_buf_file)(struct dentry *dentry);
+-};
++} __no_const;
+
+ /*
+ * CONFIG_RELAY kernel API, kernel/relay.c
diff -urNp linux-2.6.32.43/include/linux/sched.h linux-2.6.32.43/include/linux/sched.h
--- linux-2.6.32.43/include/linux/sched.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/sched.h 2011-07-14 19:16:12.000000000 -0400
++++ linux-2.6.32.43/include/linux/sched.h 2011-08-05 20:33:55.000000000 -0400
@@ -101,6 +101,7 @@ struct bio;
struct fs_struct;
struct bts_context;
@@ -57754,7 +60354,7 @@ diff -urNp linux-2.6.32.43/include/linux/sched.h linux-2.6.32.43/include/linux/s
+#define MF_PAX_SEGMEXEC 0x20000000 /* Segmentation based non-executable pages */
+
+#ifdef CONFIG_PAX_SOFTMODE
-+extern unsigned int pax_softmode;
++extern int pax_softmode;
+#endif
+
+extern int pax_check_flags(unsigned long *);
@@ -58031,7 +60631,7 @@ diff -urNp linux-2.6.32.43/include/linux/slab.h linux-2.6.32.43/include/linux/sl
#endif /* _LINUX_SLAB_H */
diff -urNp linux-2.6.32.43/include/linux/slub_def.h linux-2.6.32.43/include/linux/slub_def.h
--- linux-2.6.32.43/include/linux/slub_def.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/slub_def.h 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/include/linux/slub_def.h 2011-08-05 20:33:55.000000000 -0400
@@ -86,7 +86,7 @@ struct kmem_cache {
struct kmem_cache_order_objects max;
struct kmem_cache_order_objects min;
@@ -58041,6 +60641,15 @@ diff -urNp linux-2.6.32.43/include/linux/slub_def.h linux-2.6.32.43/include/linu
void (*ctor)(void *);
int inuse; /* Offset to metadata */
int align; /* Alignment */
+@@ -215,7 +215,7 @@ static __always_inline struct kmem_cache
+ #endif
+
+ void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
+-void *__kmalloc(size_t size, gfp_t flags);
++void *__kmalloc(size_t size, gfp_t flags) __alloc_size(1);
+
+ #ifdef CONFIG_KMEMTRACE
+ extern void *kmem_cache_alloc_notrace(struct kmem_cache *s, gfp_t gfpflags);
diff -urNp linux-2.6.32.43/include/linux/sonet.h linux-2.6.32.43/include/linux/sonet.h
--- linux-2.6.32.43/include/linux/sonet.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/sonet.h 2011-04-17 15:56:46.000000000 -0400
@@ -58053,6 +60662,18 @@ diff -urNp linux-2.6.32.43/include/linux/sonet.h linux-2.6.32.43/include/linux/s
__SONET_ITEMS
#undef __HANDLE_ITEM
};
+diff -urNp linux-2.6.32.43/include/linux/sunrpc/cache.h linux-2.6.32.43/include/linux/sunrpc/cache.h
+--- linux-2.6.32.43/include/linux/sunrpc/cache.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/linux/sunrpc/cache.h 2011-08-05 20:33:55.000000000 -0400
+@@ -125,7 +125,7 @@ struct cache_detail {
+ */
+ struct cache_req {
+ struct cache_deferred_req *(*defer)(struct cache_req *req);
+-};
++} __no_const;
+ /* this must be embedded in a deferred_request that is being
+ * delayed awaiting cache-fill
+ */
diff -urNp linux-2.6.32.43/include/linux/sunrpc/clnt.h linux-2.6.32.43/include/linux/sunrpc/clnt.h
--- linux-2.6.32.43/include/linux/sunrpc/clnt.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/sunrpc/clnt.h 2011-04-17 15:56:46.000000000 -0400
@@ -58266,42 +60887,15 @@ diff -urNp linux-2.6.32.43/include/linux/thread_info.h linux-2.6.32.43/include/l
u32 bitset;
diff -urNp linux-2.6.32.43/include/linux/tty.h linux-2.6.32.43/include/linux/tty.h
--- linux-2.6.32.43/include/linux/tty.h 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/include/linux/tty.h 2011-04-17 15:56:46.000000000 -0400
-@@ -13,6 +13,7 @@
- #include <linux/tty_driver.h>
- #include <linux/tty_ldisc.h>
- #include <linux/mutex.h>
-+#include <linux/poll.h>
-
- #include <asm/system.h>
-
-@@ -443,7 +444,6 @@ extern int tty_perform_flush(struct tty_
- extern dev_t tty_devnum(struct tty_struct *tty);
- extern void proc_clear_tty(struct task_struct *p);
- extern struct tty_struct *get_current_tty(void);
--extern void tty_default_fops(struct file_operations *fops);
- extern struct tty_struct *alloc_tty_struct(void);
- extern void free_tty_struct(struct tty_struct *tty);
- extern void initialize_tty_struct(struct tty_struct *tty,
-@@ -493,6 +493,18 @@ extern void tty_ldisc_begin(void);
++++ linux-2.6.32.43/include/linux/tty.h 2011-08-05 20:33:55.000000000 -0400
+@@ -493,7 +493,6 @@ extern void tty_ldisc_begin(void);
/* This last one is just for the tty layer internals and shouldn't be used elsewhere */
extern void tty_ldisc_enable(struct tty_struct *tty);
-+/* tty_io.c */
-+extern ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
-+extern ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
-+extern unsigned int tty_poll(struct file *, poll_table *);
-+#ifdef CONFIG_COMPAT
-+extern long tty_compat_ioctl(struct file *file, unsigned int cmd,
-+ unsigned long arg);
-+#else
-+#define tty_compat_ioctl NULL
-+#endif
-+extern int tty_release(struct inode *, struct file *);
-+extern int tty_fasync(int fd, struct file *filp, int on);
-
+-
/* n_tty.c */
extern struct tty_ldisc_ops tty_ldisc_N_TTY;
+
diff -urNp linux-2.6.32.43/include/linux/tty_ldisc.h linux-2.6.32.43/include/linux/tty_ldisc.h
--- linux-2.6.32.43/include/linux/tty_ldisc.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/linux/tty_ldisc.h 2011-04-17 15:56:46.000000000 -0400
@@ -58583,6 +61177,18 @@ diff -urNp linux-2.6.32.43/include/linux/vmstat.h linux-2.6.32.43/include/linux/
}
static inline void __dec_zone_page_state(struct page *page,
+diff -urNp linux-2.6.32.43/include/media/v4l2-dev.h linux-2.6.32.43/include/media/v4l2-dev.h
+--- linux-2.6.32.43/include/media/v4l2-dev.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/media/v4l2-dev.h 2011-08-05 20:33:55.000000000 -0400
+@@ -34,7 +34,7 @@ struct v4l2_device;
+ #define V4L2_FL_UNREGISTERED (0)
+
+ struct v4l2_file_operations {
+- struct module *owner;
++ struct module * const owner;
+ ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
+ ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
+ unsigned int (*poll) (struct file *, struct poll_table_struct *);
diff -urNp linux-2.6.32.43/include/media/v4l2-device.h linux-2.6.32.43/include/media/v4l2-device.h
--- linux-2.6.32.43/include/media/v4l2-device.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/media/v4l2-device.h 2011-05-04 17:56:28.000000000 -0400
@@ -58640,6 +61246,18 @@ diff -urNp linux-2.6.32.43/include/net/ip_vs.h linux-2.6.32.43/include/net/ip_vs
atomic_t weight; /* server weight */
atomic_t refcnt; /* reference counter */
+diff -urNp linux-2.6.32.43/include/net/irda/ircomm_core.h linux-2.6.32.43/include/net/irda/ircomm_core.h
+--- linux-2.6.32.43/include/net/irda/ircomm_core.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/net/irda/ircomm_core.h 2011-08-05 20:33:55.000000000 -0400
+@@ -51,7 +51,7 @@ typedef struct {
+ int (*connect_response)(struct ircomm_cb *, struct sk_buff *);
+ int (*disconnect_request)(struct ircomm_cb *, struct sk_buff *,
+ struct ircomm_info *);
+-} call_t;
++} __no_const call_t;
+
+ struct ircomm_cb {
+ irda_queue_t queue;
diff -urNp linux-2.6.32.43/include/net/irda/ircomm_tty.h linux-2.6.32.43/include/net/irda/ircomm_tty.h
--- linux-2.6.32.43/include/net/irda/ircomm_tty.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/net/irda/ircomm_tty.h 2011-04-17 15:56:46.000000000 -0400
@@ -58674,6 +61292,18 @@ diff -urNp linux-2.6.32.43/include/net/iucv/af_iucv.h linux-2.6.32.43/include/ne
};
unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
+diff -urNp linux-2.6.32.43/include/net/lapb.h linux-2.6.32.43/include/net/lapb.h
+--- linux-2.6.32.43/include/net/lapb.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/net/lapb.h 2011-08-05 20:33:55.000000000 -0400
+@@ -95,7 +95,7 @@ struct lapb_cb {
+ struct sk_buff_head write_queue;
+ struct sk_buff_head ack_queue;
+ unsigned char window;
+- struct lapb_register_struct callbacks;
++ struct lapb_register_struct *callbacks;
+
+ /* FRMR control information */
+ struct lapb_frame frmr_data;
diff -urNp linux-2.6.32.43/include/net/neighbour.h linux-2.6.32.43/include/net/neighbour.h
--- linux-2.6.32.43/include/net/neighbour.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/net/neighbour.h 2011-04-17 15:56:46.000000000 -0400
@@ -58768,6 +61398,18 @@ diff -urNp linux-2.6.32.43/include/net/udp.h linux-2.6.32.43/include/net/udp.h
struct file_operations seq_fops;
struct seq_operations seq_ops;
};
+diff -urNp linux-2.6.32.43/include/rdma/iw_cm.h linux-2.6.32.43/include/rdma/iw_cm.h
+--- linux-2.6.32.43/include/rdma/iw_cm.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/rdma/iw_cm.h 2011-08-05 20:33:55.000000000 -0400
+@@ -129,7 +129,7 @@ struct iw_cm_verbs {
+ int backlog);
+
+ int (*destroy_listen)(struct iw_cm_id *cm_id);
+-};
++} __no_const;
+
+ /**
+ * iw_create_cm_id - Create an IW CM identifier.
diff -urNp linux-2.6.32.43/include/scsi/scsi_device.h linux-2.6.32.43/include/scsi/scsi_device.h
--- linux-2.6.32.43/include/scsi/scsi_device.h 2011-04-17 17:00:52.000000000 -0400
+++ linux-2.6.32.43/include/scsi/scsi_device.h 2011-05-04 17:56:28.000000000 -0400
@@ -58784,6 +61426,85 @@ diff -urNp linux-2.6.32.43/include/scsi/scsi_device.h linux-2.6.32.43/include/sc
struct device sdev_gendev,
sdev_dev;
+diff -urNp linux-2.6.32.43/include/scsi/scsi_transport_fc.h linux-2.6.32.43/include/scsi/scsi_transport_fc.h
+--- linux-2.6.32.43/include/scsi/scsi_transport_fc.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/scsi/scsi_transport_fc.h 2011-08-05 20:33:55.000000000 -0400
+@@ -663,9 +663,9 @@ struct fc_function_template {
+ int (*bsg_timeout)(struct fc_bsg_job *);
+
+ /* allocation lengths for host-specific data */
+- u32 dd_fcrport_size;
+- u32 dd_fcvport_size;
+- u32 dd_bsg_size;
++ const u32 dd_fcrport_size;
++ const u32 dd_fcvport_size;
++ const u32 dd_bsg_size;
+
+ /*
+ * The driver sets these to tell the transport class it
+@@ -675,39 +675,39 @@ struct fc_function_template {
+ */
+
+ /* remote port fixed attributes */
+- unsigned long show_rport_maxframe_size:1;
+- unsigned long show_rport_supported_classes:1;
+- unsigned long show_rport_dev_loss_tmo:1;
++ const unsigned long show_rport_maxframe_size:1;
++ const unsigned long show_rport_supported_classes:1;
++ const unsigned long show_rport_dev_loss_tmo:1;
+
+ /*
+ * target dynamic attributes
+ * These should all be "1" if the driver uses the remote port
+ * add/delete functions (so attributes reflect rport values).
+ */
+- unsigned long show_starget_node_name:1;
+- unsigned long show_starget_port_name:1;
+- unsigned long show_starget_port_id:1;
++ const unsigned long show_starget_node_name:1;
++ const unsigned long show_starget_port_name:1;
++ const unsigned long show_starget_port_id:1;
+
+ /* host fixed attributes */
+- unsigned long show_host_node_name:1;
+- unsigned long show_host_port_name:1;
+- unsigned long show_host_permanent_port_name:1;
+- unsigned long show_host_supported_classes:1;
+- unsigned long show_host_supported_fc4s:1;
+- unsigned long show_host_supported_speeds:1;
+- unsigned long show_host_maxframe_size:1;
+- unsigned long show_host_serial_number:1;
++ const unsigned long show_host_node_name:1;
++ const unsigned long show_host_port_name:1;
++ const unsigned long show_host_permanent_port_name:1;
++ const unsigned long show_host_supported_classes:1;
++ const unsigned long show_host_supported_fc4s:1;
++ const unsigned long show_host_supported_speeds:1;
++ const unsigned long show_host_maxframe_size:1;
++ const unsigned long show_host_serial_number:1;
+ /* host dynamic attributes */
+- unsigned long show_host_port_id:1;
+- unsigned long show_host_port_type:1;
+- unsigned long show_host_port_state:1;
+- unsigned long show_host_active_fc4s:1;
+- unsigned long show_host_speed:1;
+- unsigned long show_host_fabric_name:1;
+- unsigned long show_host_symbolic_name:1;
+- unsigned long show_host_system_hostname:1;
++ const unsigned long show_host_port_id:1;
++ const unsigned long show_host_port_type:1;
++ const unsigned long show_host_port_state:1;
++ const unsigned long show_host_active_fc4s:1;
++ const unsigned long show_host_speed:1;
++ const unsigned long show_host_fabric_name:1;
++ const unsigned long show_host_symbolic_name:1;
++ const unsigned long show_host_system_hostname:1;
+
+- unsigned long disable_target_scan:1;
++ const unsigned long disable_target_scan:1;
+ };
+
+
diff -urNp linux-2.6.32.43/include/sound/ac97_codec.h linux-2.6.32.43/include/sound/ac97_codec.h
--- linux-2.6.32.43/include/sound/ac97_codec.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/sound/ac97_codec.h 2011-04-17 15:56:46.000000000 -0400
@@ -58819,6 +61540,54 @@ diff -urNp linux-2.6.32.43/include/sound/ac97_codec.h linux-2.6.32.43/include/so
void *private_data;
void (*private_free) (struct snd_ac97 *ac97);
/* --- */
+diff -urNp linux-2.6.32.43/include/sound/ak4xxx-adda.h linux-2.6.32.43/include/sound/ak4xxx-adda.h
+--- linux-2.6.32.43/include/sound/ak4xxx-adda.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/sound/ak4xxx-adda.h 2011-08-05 20:33:55.000000000 -0400
+@@ -35,7 +35,7 @@ struct snd_ak4xxx_ops {
+ void (*write)(struct snd_akm4xxx *ak, int chip, unsigned char reg,
+ unsigned char val);
+ void (*set_rate_val)(struct snd_akm4xxx *ak, unsigned int rate);
+-};
++} __no_const;
+
+ #define AK4XXX_IMAGE_SIZE (AK4XXX_MAX_CHIPS * 16) /* 64 bytes */
+
+diff -urNp linux-2.6.32.43/include/sound/hwdep.h linux-2.6.32.43/include/sound/hwdep.h
+--- linux-2.6.32.43/include/sound/hwdep.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/sound/hwdep.h 2011-08-05 20:33:55.000000000 -0400
+@@ -49,7 +49,7 @@ struct snd_hwdep_ops {
+ struct snd_hwdep_dsp_status *status);
+ int (*dsp_load)(struct snd_hwdep *hw,
+ struct snd_hwdep_dsp_image *image);
+-};
++} __no_const;
+
+ struct snd_hwdep {
+ struct snd_card *card;
+diff -urNp linux-2.6.32.43/include/sound/info.h linux-2.6.32.43/include/sound/info.h
+--- linux-2.6.32.43/include/sound/info.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/sound/info.h 2011-08-05 20:33:55.000000000 -0400
+@@ -44,7 +44,7 @@ struct snd_info_entry_text {
+ struct snd_info_buffer *buffer);
+ void (*write)(struct snd_info_entry *entry,
+ struct snd_info_buffer *buffer);
+-};
++} __no_const;
+
+ struct snd_info_entry_ops {
+ int (*open)(struct snd_info_entry *entry,
+diff -urNp linux-2.6.32.43/include/sound/sb16_csp.h linux-2.6.32.43/include/sound/sb16_csp.h
+--- linux-2.6.32.43/include/sound/sb16_csp.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/include/sound/sb16_csp.h 2011-08-05 20:33:55.000000000 -0400
+@@ -139,7 +139,7 @@ struct snd_sb_csp_ops {
+ int (*csp_start) (struct snd_sb_csp * p, int sample_width, int channels);
+ int (*csp_stop) (struct snd_sb_csp * p);
+ int (*csp_qsound_transfer) (struct snd_sb_csp * p);
+-};
++} __no_const;
+
+ /*
+ * CSP private data
diff -urNp linux-2.6.32.43/include/sound/ymfpci.h linux-2.6.32.43/include/sound/ymfpci.h
--- linux-2.6.32.43/include/sound/ymfpci.h 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/include/sound/ymfpci.h 2011-05-04 17:56:28.000000000 -0400
@@ -59192,7 +61961,7 @@ diff -urNp linux-2.6.32.43/init/Kconfig linux-2.6.32.43/init/Kconfig
also breaks ancient binaries (including anything libc5 based).
diff -urNp linux-2.6.32.43/init/main.c linux-2.6.32.43/init/main.c
--- linux-2.6.32.43/init/main.c 2011-05-10 22:12:01.000000000 -0400
-+++ linux-2.6.32.43/init/main.c 2011-05-22 23:02:06.000000000 -0400
++++ linux-2.6.32.43/init/main.c 2011-08-05 20:33:55.000000000 -0400
@@ -97,6 +97,7 @@ static inline void mark_rodata_ro(void)
#ifdef CONFIG_TC
extern void tc_init(void);
@@ -59238,7 +62007,7 @@ diff -urNp linux-2.6.32.43/init/main.c linux-2.6.32.43/init/main.c
+#endif
+
+#ifdef CONFIG_PAX_SOFTMODE
-+unsigned int pax_softmode;
++int pax_softmode;
+
+static int __init setup_pax_softmode(char *str)
+{
@@ -59368,10 +62137,66 @@ diff -urNp linux-2.6.32.43/ipc/mqueue.c linux-2.6.32.43/ipc/mqueue.c
spin_lock(&mq_lock);
if (u->mq_bytes + mq_bytes < u->mq_bytes ||
u->mq_bytes + mq_bytes >
+diff -urNp linux-2.6.32.43/ipc/msg.c linux-2.6.32.43/ipc/msg.c
+--- linux-2.6.32.43/ipc/msg.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/ipc/msg.c 2011-08-05 20:33:55.000000000 -0400
+@@ -310,18 +310,19 @@ static inline int msg_security(struct ke
+ return security_msg_queue_associate(msq, msgflg);
+ }
+
++static struct ipc_ops msg_ops = {
++ .getnew = newque,
++ .associate = msg_security,
++ .more_checks = NULL
++};
++
+ SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
+ {
+ struct ipc_namespace *ns;
+- struct ipc_ops msg_ops;
+ struct ipc_params msg_params;
+
+ ns = current->nsproxy->ipc_ns;
+
+- msg_ops.getnew = newque;
+- msg_ops.associate = msg_security;
+- msg_ops.more_checks = NULL;
+-
+ msg_params.key = key;
+ msg_params.flg = msgflg;
+
diff -urNp linux-2.6.32.43/ipc/sem.c linux-2.6.32.43/ipc/sem.c
--- linux-2.6.32.43/ipc/sem.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/ipc/sem.c 2011-05-16 21:46:57.000000000 -0400
-@@ -671,6 +671,8 @@ static int semctl_main(struct ipc_namesp
++++ linux-2.6.32.43/ipc/sem.c 2011-08-05 20:33:55.000000000 -0400
+@@ -309,10 +309,15 @@ static inline int sem_more_checks(struct
+ return 0;
+ }
+
++static struct ipc_ops sem_ops = {
++ .getnew = newary,
++ .associate = sem_security,
++ .more_checks = sem_more_checks
++};
++
+ SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
+ {
+ struct ipc_namespace *ns;
+- struct ipc_ops sem_ops;
+ struct ipc_params sem_params;
+
+ ns = current->nsproxy->ipc_ns;
+@@ -320,10 +325,6 @@ SYSCALL_DEFINE3(semget, key_t, key, int,
+ if (nsems < 0 || nsems > ns->sc_semmsl)
+ return -EINVAL;
+
+- sem_ops.getnew = newary;
+- sem_ops.associate = sem_security;
+- sem_ops.more_checks = sem_more_checks;
+-
+ sem_params.key = key;
+ sem_params.flg = semflg;
+ sem_params.u.nsems = nsems;
+@@ -671,6 +672,8 @@ static int semctl_main(struct ipc_namesp
ushort* sem_io = fast_sem_io;
int nsems;
@@ -59380,7 +62205,7 @@ diff -urNp linux-2.6.32.43/ipc/sem.c linux-2.6.32.43/ipc/sem.c
sma = sem_lock_check(ns, semid);
if (IS_ERR(sma))
return PTR_ERR(sma);
-@@ -1071,6 +1073,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
+@@ -1071,6 +1074,8 @@ SYSCALL_DEFINE4(semtimedop, int, semid,
unsigned long jiffies_left = 0;
struct ipc_namespace *ns;
@@ -59391,7 +62216,7 @@ diff -urNp linux-2.6.32.43/ipc/sem.c linux-2.6.32.43/ipc/sem.c
if (nsops < 1 || semid < 0)
diff -urNp linux-2.6.32.43/ipc/shm.c linux-2.6.32.43/ipc/shm.c
--- linux-2.6.32.43/ipc/shm.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/ipc/shm.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/ipc/shm.c 2011-08-05 20:33:55.000000000 -0400
@@ -70,6 +70,14 @@ static void shm_destroy (struct ipc_name
static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
#endif
@@ -59422,7 +62247,32 @@ diff -urNp linux-2.6.32.43/ipc/shm.c linux-2.6.32.43/ipc/shm.c
shp->shm_segsz = size;
shp->shm_nattch = 0;
shp->shm_file = file;
-@@ -880,9 +896,21 @@ long do_shmat(int shmid, char __user *sh
+@@ -446,18 +462,19 @@ static inline int shm_more_checks(struct
+ return 0;
+ }
+
++static struct ipc_ops shm_ops = {
++ .getnew = newseg,
++ .associate = shm_security,
++ .more_checks = shm_more_checks
++};
++
+ SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
+ {
+ struct ipc_namespace *ns;
+- struct ipc_ops shm_ops;
+ struct ipc_params shm_params;
+
+ ns = current->nsproxy->ipc_ns;
+
+- shm_ops.getnew = newseg;
+- shm_ops.associate = shm_security;
+- shm_ops.more_checks = shm_more_checks;
+-
+ shm_params.key = key;
+ shm_params.flg = shmflg;
+ shm_params.u.size = size;
+@@ -880,9 +897,21 @@ long do_shmat(int shmid, char __user *sh
if (err)
goto out_unlock;
@@ -61730,7 +64580,7 @@ diff -urNp linux-2.6.32.43/kernel/posix-cpu-timers.c linux-2.6.32.43/kernel/posi
#include <trace/events/timer.h>
diff -urNp linux-2.6.32.43/kernel/posix-timers.c linux-2.6.32.43/kernel/posix-timers.c
--- linux-2.6.32.43/kernel/posix-timers.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/kernel/posix-timers.c 2011-05-16 21:46:57.000000000 -0400
++++ linux-2.6.32.43/kernel/posix-timers.c 2011-08-05 20:33:55.000000000 -0400
@@ -42,6 +42,7 @@
#include <linux/compiler.h>
#include <linux/idr.h>
@@ -61739,6 +64589,47 @@ diff -urNp linux-2.6.32.43/kernel/posix-timers.c linux-2.6.32.43/kernel/posix-ti
#include <linux/syscalls.h>
#include <linux/wait.h>
#include <linux/workqueue.h>
+@@ -131,7 +132,7 @@ static DEFINE_SPINLOCK(idr_lock);
+ * which we beg off on and pass to do_sys_settimeofday().
+ */
+
+-static struct k_clock posix_clocks[MAX_CLOCKS];
++static struct k_clock *posix_clocks[MAX_CLOCKS];
+
+ /*
+ * These ones are defined below.
+@@ -157,8 +158,8 @@ static inline void unlock_timer(struct k
+ */
+ #define CLOCK_DISPATCH(clock, call, arglist) \
+ ((clock) < 0 ? posix_cpu_##call arglist : \
+- (posix_clocks[clock].call != NULL \
+- ? (*posix_clocks[clock].call) arglist : common_##call arglist))
++ (posix_clocks[clock]->call != NULL \
++ ? (*posix_clocks[clock]->call) arglist : common_##call arglist))
+
+ /*
+ * Default clock hook functions when the struct k_clock passed
+@@ -172,7 +173,7 @@ static inline int common_clock_getres(co
+ struct timespec *tp)
+ {
+ tp->tv_sec = 0;
+- tp->tv_nsec = posix_clocks[which_clock].res;
++ tp->tv_nsec = posix_clocks[which_clock]->res;
+ return 0;
+ }
+
+@@ -217,9 +218,9 @@ static inline int invalid_clockid(const
+ return 0;
+ if ((unsigned) which_clock >= MAX_CLOCKS)
+ return 1;
+- if (posix_clocks[which_clock].clock_getres != NULL)
++ if (posix_clocks[which_clock]->clock_getres != NULL)
+ return 0;
+- if (posix_clocks[which_clock].res != 0)
++ if (posix_clocks[which_clock]->res != 0)
+ return 0;
+ return 1;
+ }
@@ -296,6 +297,8 @@ static __init int init_posix_timers(void
.nsleep = no_nsleep,
};
@@ -61748,6 +64639,15 @@ diff -urNp linux-2.6.32.43/kernel/posix-timers.c linux-2.6.32.43/kernel/posix-ti
register_posix_clock(CLOCK_REALTIME, &clock_realtime);
register_posix_clock(CLOCK_MONOTONIC, &clock_monotonic);
register_posix_clock(CLOCK_MONOTONIC_RAW, &clock_monotonic_raw);
+@@ -484,7 +487,7 @@ void register_posix_clock(const clockid_
+ return;
+ }
+
+- posix_clocks[clock_id] = *new_clock;
++ posix_clocks[clock_id] = new_clock;
+ }
+ EXPORT_SYMBOL_GPL(register_posix_clock);
+
@@ -948,6 +951,13 @@ SYSCALL_DEFINE2(clock_settime, const clo
if (copy_from_user(&new_tp, tp, sizeof (*tp)))
return -EFAULT;
@@ -62694,7 +65594,7 @@ diff -urNp linux-2.6.32.43/kernel/smp.c linux-2.6.32.43/kernel/smp.c
}
diff -urNp linux-2.6.32.43/kernel/softirq.c linux-2.6.32.43/kernel/softirq.c
--- linux-2.6.32.43/kernel/softirq.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/kernel/softirq.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/kernel/softirq.c 2011-08-05 20:33:55.000000000 -0400
@@ -56,7 +56,7 @@ static struct softirq_action softirq_vec
static DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
@@ -62722,16 +65622,21 @@ diff -urNp linux-2.6.32.43/kernel/softirq.c linux-2.6.32.43/kernel/softirq.c
trace_softirq_exit(h, softirq_vec);
if (unlikely(prev_count != preempt_count())) {
printk(KERN_ERR "huh, entered softirq %td %s %p"
-@@ -363,7 +363,7 @@ void raise_softirq(unsigned int nr)
+@@ -363,9 +363,11 @@ void raise_softirq(unsigned int nr)
local_irq_restore(flags);
}
-void open_softirq(int nr, void (*action)(struct softirq_action *))
+void open_softirq(int nr, void (*action)(void))
{
- softirq_vec[nr].action = action;
+- softirq_vec[nr].action = action;
++ pax_open_kernel();
++ *(void **)&softirq_vec[nr].action = action;
++ pax_close_kernel();
}
-@@ -419,7 +419,7 @@ void __tasklet_hi_schedule_first(struct
+
+ /*
+@@ -419,7 +421,7 @@ void __tasklet_hi_schedule_first(struct
EXPORT_SYMBOL(__tasklet_hi_schedule_first);
@@ -62740,7 +65645,7 @@ diff -urNp linux-2.6.32.43/kernel/softirq.c linux-2.6.32.43/kernel/softirq.c
{
struct tasklet_struct *list;
-@@ -454,7 +454,7 @@ static void tasklet_action(struct softir
+@@ -454,7 +456,7 @@ static void tasklet_action(struct softir
}
}
@@ -63477,16 +66382,57 @@ diff -urNp linux-2.6.32.43/kernel/trace/trace.c linux-2.6.32.43/kernel/trace/tra
diff -urNp linux-2.6.32.43/kernel/trace/trace_events.c linux-2.6.32.43/kernel/trace/trace_events.c
--- linux-2.6.32.43/kernel/trace/trace_events.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/kernel/trace/trace_events.c 2011-04-17 15:56:46.000000000 -0400
-@@ -951,6 +951,8 @@ static LIST_HEAD(ftrace_module_file_list
++++ linux-2.6.32.43/kernel/trace/trace_events.c 2011-08-05 20:33:55.000000000 -0400
+@@ -951,13 +951,10 @@ static LIST_HEAD(ftrace_module_file_list
* Modules must own their file_operations to keep up with
* reference counting.
*/
+
-+/* cannot be const */
struct ftrace_module_file_ops {
struct list_head list;
struct module *mod;
+- struct file_operations id;
+- struct file_operations enable;
+- struct file_operations format;
+- struct file_operations filter;
+ };
+
+ static void remove_subsystem_dir(const char *name)
+@@ -1004,17 +1001,12 @@ trace_create_file_ops(struct module *mod
+
+ file_ops->mod = mod;
+
+- file_ops->id = ftrace_event_id_fops;
+- file_ops->id.owner = mod;
+-
+- file_ops->enable = ftrace_enable_fops;
+- file_ops->enable.owner = mod;
+-
+- file_ops->filter = ftrace_event_filter_fops;
+- file_ops->filter.owner = mod;
+-
+- file_ops->format = ftrace_event_format_fops;
+- file_ops->format.owner = mod;
++ pax_open_kernel();
++ *(void **)&mod->trace_id.owner = mod;
++ *(void **)&mod->trace_enable.owner = mod;
++ *(void **)&mod->trace_filter.owner = mod;
++ *(void **)&mod->trace_format.owner = mod;
++ pax_close_kernel();
+
+ list_add(&file_ops->list, &ftrace_module_file_list);
+
+@@ -1063,8 +1055,8 @@ static void trace_module_add_events(stru
+ call->mod = mod;
+ list_add(&call->list, &ftrace_events);
+ event_create_dir(call, d_events,
+- &file_ops->id, &file_ops->enable,
+- &file_ops->filter, &file_ops->format);
++ &mod->trace_id, &mod->trace_enable,
++ &mod->trace_filter, &mod->trace_format);
+ }
+ }
+
diff -urNp linux-2.6.32.43/kernel/trace/trace_mmiotrace.c linux-2.6.32.43/kernel/trace/trace_mmiotrace.c
--- linux-2.6.32.43/kernel/trace/trace_mmiotrace.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/kernel/trace/trace_mmiotrace.c 2011-05-04 17:56:28.000000000 -0400
@@ -63863,7 +66809,7 @@ diff -urNp linux-2.6.32.43/localversion-grsec linux-2.6.32.43/localversion-grsec
+-grsec
diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
--- linux-2.6.32.43/Makefile 2011-07-13 17:23:04.000000000 -0400
-+++ linux-2.6.32.43/Makefile 2011-07-13 17:23:18.000000000 -0400
++++ linux-2.6.32.43/Makefile 2011-08-05 20:33:55.000000000 -0400
@@ -221,8 +221,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
HOSTCC = gcc
@@ -63895,8 +66841,8 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
# Basic helpers built in scripts/
-PHONY += scripts_basic
-scripts_basic:
-+PHONY += scripts_basic pax-plugin
-+scripts_basic: pax-plugin
++PHONY += scripts_basic gcc-plugins
++scripts_basic: gcc-plugins
$(Q)$(MAKE) $(build)=scripts/basic
# To avoid any implicit rule to kick in, define an empty command.
@@ -63909,26 +66855,33 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
include/linux/version.h headers_% \
kernelrelease kernelversion
-@@ -528,6 +531,18 @@ endif
-
- include $(srctree)/arch/$(SRCARCH)/Makefile
+@@ -526,6 +529,25 @@ else
+ KBUILD_CFLAGS += -O2
+ endif
-+ifeq ($(CONFIG_PAX_MEMORY_STACKLEAK),y)
-+KBUILD_CFLAGS += $(call cc-ifversion, -ge, 0405, -fplugin=$(objtree)/tools/gcc/pax_plugin.so -fplugin-arg-pax_plugin-track-lowest-sp=100)
++ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-plugin.sh $(HOSTCC)), y)
++CONSTIFY_PLUGIN := -fplugin=$(objtree)/tools/gcc/constify_plugin.so
++ifdef CONFIG_PAX_MEMORY_STACKLEAK
++STACKLEAK_PLUGIN := -fplugin=$(objtree)/tools/gcc/stackleak_plugin.so -fplugin-arg-stackleak_plugin-track-lowest-sp=100
+endif
-+pax-plugin:
-+ifneq (,$(findstring pax_plugin, $(KBUILD_CFLAGS)))
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) $(STACKLEAK_PLUGIN)
++export CONSTIFY_PLUGIN STACKLEAK_PLUGIN
++gcc-plugins:
+ $(Q)$(MAKE) $(build)=tools/gcc
+else
-+ifeq ($(CONFIG_PAX_MEMORY_STACKLEAK),y)
-+ $(Q)echo "warning, your gcc does not support plugins, PAX_MEMORY_STACKLEAK will be less secure"
++gcc-plugins:
++ifeq ($(call cc-ifversion, -ge, 0405, y), y)
++ $(Q)echo "warning, your gcc installation does not support plugins, perhaps the necessary headers are missing?"
++else
++ $(Q)echo "warning, your gcc version does not support plugins, you should upgrade it to gcc 4.5 at least"
+endif
++ $(Q)echo "PAX_MEMORY_STACKLEAK and other will be less secure"
+endif
+
+ include $(srctree)/arch/$(SRCARCH)/Makefile
+
ifneq ($(CONFIG_FRAME_WARN),0)
- KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN})
- endif
-@@ -644,7 +659,7 @@ export mod_strip_cmd
+@@ -644,7 +666,7 @@ export mod_strip_cmd
ifeq ($(KBUILD_EXTMOD),)
@@ -63937,16 +66890,16 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
-@@ -970,7 +985,7 @@ ifneq ($(KBUILD_SRC),)
+@@ -970,7 +992,7 @@ ifneq ($(KBUILD_SRC),)
endif
# prepare2 creates a makefile if using a separate output directory
-prepare2: prepare3 outputmakefile
-+prepare2: prepare3 outputmakefile pax-plugin
++prepare2: prepare3 outputmakefile gcc-plugins
prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \
include/asm include/config/auto.conf
-@@ -1198,7 +1213,7 @@ MRPROPER_FILES += .config .config.old in
+@@ -1198,7 +1220,7 @@ MRPROPER_FILES += .config .config.old in
include/linux/autoconf.h include/linux/version.h \
include/linux/utsrelease.h \
include/linux/bounds.h include/asm*/asm-offsets.h \
@@ -63955,7 +66908,7 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
# clean - Delete most, but leave enough to build external modules
#
-@@ -1289,6 +1304,7 @@ help:
+@@ -1289,6 +1311,7 @@ help:
@echo ' modules_prepare - Set up for building external modules'
@echo ' tags/TAGS - Generate tags file for editors'
@echo ' cscope - Generate cscope index'
@@ -63963,7 +66916,7 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
@echo ' kernelrelease - Output the release version string'
@echo ' kernelversion - Output the version stored in Makefile'
@echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
-@@ -1421,7 +1437,7 @@ clean: $(clean-dirs)
+@@ -1421,7 +1444,7 @@ clean: $(clean-dirs)
$(call cmd,rmdirs)
$(call cmd,rmfiles)
@find $(KBUILD_EXTMOD) $(RCS_FIND_IGNORE) \
@@ -63972,7 +66925,7 @@ diff -urNp linux-2.6.32.43/Makefile linux-2.6.32.43/Makefile
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
-o -name '*.gcno' \) -type f -print | xargs rm -f
-@@ -1445,7 +1461,7 @@ endif # KBUILD_EXTMOD
+@@ -1445,7 +1468,7 @@ endif # KBUILD_EXTMOD
quiet_cmd_tags = GEN $@
cmd_tags = $(CONFIG_SHELL) $(srctree)/scripts/tags.sh $@
@@ -67917,6 +70870,32 @@ diff -urNp linux-2.6.32.43/net/atm/atm_misc.c linux-2.6.32.43/net/atm/atm_misc.c
__SONET_ITEMS
#undef __HANDLE_ITEM
}
+diff -urNp linux-2.6.32.43/net/atm/lec.h linux-2.6.32.43/net/atm/lec.h
+--- linux-2.6.32.43/net/atm/lec.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/net/atm/lec.h 2011-08-05 20:33:55.000000000 -0400
+@@ -48,7 +48,7 @@ struct lane2_ops {
+ const u8 *tlvs, u32 sizeoftlvs);
+ void (*associate_indicator) (struct net_device *dev, const u8 *mac_addr,
+ const u8 *tlvs, u32 sizeoftlvs);
+-};
++} __no_const;
+
+ /*
+ * ATM LAN Emulation supports both LLC & Dix Ethernet EtherType
+diff -urNp linux-2.6.32.43/net/atm/mpc.c linux-2.6.32.43/net/atm/mpc.c
+--- linux-2.6.32.43/net/atm/mpc.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/net/atm/mpc.c 2011-08-05 20:33:55.000000000 -0400
+@@ -291,8 +291,8 @@ static void start_mpc(struct mpoa_client
+ printk("mpoa: (%s) start_mpc not starting\n", dev->name);
+ else {
+ mpc->old_ops = dev->netdev_ops;
+- mpc->new_ops = *mpc->old_ops;
+- mpc->new_ops.ndo_start_xmit = mpc_send_packet;
++ memcpy((void *)&mpc->new_ops, mpc->old_ops, sizeof(mpc->new_ops));
++ *(void **)&mpc->new_ops.ndo_start_xmit = mpc_send_packet;
+ dev->netdev_ops = &mpc->new_ops;
+ }
+ }
diff -urNp linux-2.6.32.43/net/atm/mpoa_caches.c linux-2.6.32.43/net/atm/mpoa_caches.c
--- linux-2.6.32.43/net/atm/mpoa_caches.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/net/atm/mpoa_caches.c 2011-05-16 21:46:57.000000000 -0400
@@ -68092,7 +71071,7 @@ diff -urNp linux-2.6.32.43/net/can/bcm.c linux-2.6.32.43/net/can/bcm.c
seq_printf(m, " <<<\n");
diff -urNp linux-2.6.32.43/net/core/dev.c linux-2.6.32.43/net/core/dev.c
--- linux-2.6.32.43/net/core/dev.c 2011-04-17 17:00:52.000000000 -0400
-+++ linux-2.6.32.43/net/core/dev.c 2011-04-17 17:04:18.000000000 -0400
++++ linux-2.6.32.43/net/core/dev.c 2011-08-05 20:33:55.000000000 -0400
@@ -1047,10 +1047,14 @@ void dev_load(struct net *net, const cha
if (no_module && capable(CAP_NET_ADMIN))
no_module = request_module("netdev-%s", name);
@@ -68108,6 +71087,15 @@ diff -urNp linux-2.6.32.43/net/core/dev.c linux-2.6.32.43/net/core/dev.c
}
}
EXPORT_SYMBOL(dev_load);
+@@ -1654,7 +1658,7 @@ static inline int illegal_highdma(struct
+
+ struct dev_gso_cb {
+ void (*destructor)(struct sk_buff *skb);
+-};
++} __no_const;
+
+ #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
+
@@ -2063,7 +2067,7 @@ int netif_rx_ni(struct sk_buff *skb)
}
EXPORT_SYMBOL(netif_rx_ni);
@@ -68188,6 +71176,18 @@ diff -urNp linux-2.6.32.43/net/core/flow.c linux-2.6.32.43/net/core/flow.c
if (!fle->object || fle->genid == genid)
continue;
+diff -urNp linux-2.6.32.43/net/core/rtnetlink.c linux-2.6.32.43/net/core/rtnetlink.c
+--- linux-2.6.32.43/net/core/rtnetlink.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/net/core/rtnetlink.c 2011-08-05 20:33:55.000000000 -0400
+@@ -57,7 +57,7 @@ struct rtnl_link
+ {
+ rtnl_doit_func doit;
+ rtnl_dumpit_func dumpit;
+-};
++} __no_const;
+
+ static DEFINE_MUTEX(rtnl_mutex);
+
diff -urNp linux-2.6.32.43/net/core/skbuff.c linux-2.6.32.43/net/core/skbuff.c
--- linux-2.6.32.43/net/core/skbuff.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/net/core/skbuff.c 2011-05-16 21:46:57.000000000 -0400
@@ -68579,7 +71579,7 @@ diff -urNp linux-2.6.32.43/net/ipv4/tcp.c linux-2.6.32.43/net/ipv4/tcp.c
diff -urNp linux-2.6.32.43/net/ipv4/tcp_ipv4.c linux-2.6.32.43/net/ipv4/tcp_ipv4.c
--- linux-2.6.32.43/net/ipv4/tcp_ipv4.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/net/ipv4/tcp_ipv4.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/net/ipv4/tcp_ipv4.c 2011-08-05 20:33:55.000000000 -0400
@@ -84,6 +84,9 @@
int sysctl_tcp_tw_reuse __read_mostly;
int sysctl_tcp_low_latency __read_mostly;
@@ -68634,6 +71634,29 @@ diff -urNp linux-2.6.32.43/net/ipv4/tcp_ipv4.c linux-2.6.32.43/net/ipv4/tcp_ipv4
tcp_v4_send_reset(NULL, skb);
}
+@@ -2194,14 +2212,14 @@ int tcp_proc_register(struct net *net, s
+ int rc = 0;
+ struct proc_dir_entry *p;
+
+- afinfo->seq_fops.open = tcp_seq_open;
+- afinfo->seq_fops.read = seq_read;
+- afinfo->seq_fops.llseek = seq_lseek;
+- afinfo->seq_fops.release = seq_release_net;
+-
+- afinfo->seq_ops.start = tcp_seq_start;
+- afinfo->seq_ops.next = tcp_seq_next;
+- afinfo->seq_ops.stop = tcp_seq_stop;
++ *(void **)&afinfo->seq_fops.open = tcp_seq_open;
++ *(void **)&afinfo->seq_fops.read = seq_read;
++ *(void **)&afinfo->seq_fops.llseek = seq_lseek;
++ *(void **)&afinfo->seq_fops.release = seq_release_net;
++
++ *(void **)&afinfo->seq_ops.start = tcp_seq_start;
++ *(void **)&afinfo->seq_ops.next = tcp_seq_next;
++ *(void **)&afinfo->seq_ops.stop = tcp_seq_stop;
+
+ p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net,
+ &afinfo->seq_fops, afinfo);
@@ -2237,7 +2255,11 @@ static void get_openreq4(struct sock *sk
0, /* non standard timer */
0, /* open_requests have no inode */
@@ -68754,7 +71777,7 @@ diff -urNp linux-2.6.32.43/net/ipv4/tcp_timer.c linux-2.6.32.43/net/ipv4/tcp_tim
tcp_write_err(sk);
diff -urNp linux-2.6.32.43/net/ipv4/udp.c linux-2.6.32.43/net/ipv4/udp.c
--- linux-2.6.32.43/net/ipv4/udp.c 2011-07-13 17:23:04.000000000 -0400
-+++ linux-2.6.32.43/net/ipv4/udp.c 2011-07-13 17:23:27.000000000 -0400
++++ linux-2.6.32.43/net/ipv4/udp.c 2011-08-05 20:33:55.000000000 -0400
@@ -86,6 +86,7 @@
#include <linux/types.h>
#include <linux/fcntl.h>
@@ -68833,6 +71856,29 @@ diff -urNp linux-2.6.32.43/net/ipv4/udp.c linux-2.6.32.43/net/ipv4/udp.c
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
/*
+@@ -1719,14 +1743,14 @@ int udp_proc_register(struct net *net, s
+ struct proc_dir_entry *p;
+ int rc = 0;
+
+- afinfo->seq_fops.open = udp_seq_open;
+- afinfo->seq_fops.read = seq_read;
+- afinfo->seq_fops.llseek = seq_lseek;
+- afinfo->seq_fops.release = seq_release_net;
+-
+- afinfo->seq_ops.start = udp_seq_start;
+- afinfo->seq_ops.next = udp_seq_next;
+- afinfo->seq_ops.stop = udp_seq_stop;
++ *(void **)&afinfo->seq_fops.open = udp_seq_open;
++ *(void **)&afinfo->seq_fops.read = seq_read;
++ *(void **)&afinfo->seq_fops.llseek = seq_lseek;
++ *(void **)&afinfo->seq_fops.release = seq_release_net;
++
++ *(void **)&afinfo->seq_ops.start = udp_seq_start;
++ *(void **)&afinfo->seq_ops.next = udp_seq_next;
++ *(void **)&afinfo->seq_ops.stop = udp_seq_stop;
+
+ p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net,
+ &afinfo->seq_fops, afinfo);
@@ -1758,8 +1782,13 @@ static void udp4_format_sock(struct sock
sk_wmem_alloc_get(sp),
sk_rmem_alloc_get(sp),
@@ -69347,6 +72393,72 @@ diff -urNp linux-2.6.32.43/net/key/af_key.c linux-2.6.32.43/net/key/af_key.c
atomic_read(&s->sk_refcnt),
sk_rmem_alloc_get(s),
sk_wmem_alloc_get(s),
+diff -urNp linux-2.6.32.43/net/lapb/lapb_iface.c linux-2.6.32.43/net/lapb/lapb_iface.c
+--- linux-2.6.32.43/net/lapb/lapb_iface.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/net/lapb/lapb_iface.c 2011-08-05 20:33:55.000000000 -0400
+@@ -157,7 +157,7 @@ int lapb_register(struct net_device *dev
+ goto out;
+
+ lapb->dev = dev;
+- lapb->callbacks = *callbacks;
++ lapb->callbacks = callbacks;
+
+ __lapb_insert_cb(lapb);
+
+@@ -379,32 +379,32 @@ int lapb_data_received(struct net_device
+
+ void lapb_connect_confirmation(struct lapb_cb *lapb, int reason)
+ {
+- if (lapb->callbacks.connect_confirmation)
+- lapb->callbacks.connect_confirmation(lapb->dev, reason);
++ if (lapb->callbacks->connect_confirmation)
++ lapb->callbacks->connect_confirmation(lapb->dev, reason);
+ }
+
+ void lapb_connect_indication(struct lapb_cb *lapb, int reason)
+ {
+- if (lapb->callbacks.connect_indication)
+- lapb->callbacks.connect_indication(lapb->dev, reason);
++ if (lapb->callbacks->connect_indication)
++ lapb->callbacks->connect_indication(lapb->dev, reason);
+ }
+
+ void lapb_disconnect_confirmation(struct lapb_cb *lapb, int reason)
+ {
+- if (lapb->callbacks.disconnect_confirmation)
+- lapb->callbacks.disconnect_confirmation(lapb->dev, reason);
++ if (lapb->callbacks->disconnect_confirmation)
++ lapb->callbacks->disconnect_confirmation(lapb->dev, reason);
+ }
+
+ void lapb_disconnect_indication(struct lapb_cb *lapb, int reason)
+ {
+- if (lapb->callbacks.disconnect_indication)
+- lapb->callbacks.disconnect_indication(lapb->dev, reason);
++ if (lapb->callbacks->disconnect_indication)
++ lapb->callbacks->disconnect_indication(lapb->dev, reason);
+ }
+
+ int lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *skb)
+ {
+- if (lapb->callbacks.data_indication)
+- return lapb->callbacks.data_indication(lapb->dev, skb);
++ if (lapb->callbacks->data_indication)
++ return lapb->callbacks->data_indication(lapb->dev, skb);
+
+ kfree_skb(skb);
+ return NET_RX_SUCCESS; /* For now; must be != NET_RX_DROP */
+@@ -414,8 +414,8 @@ int lapb_data_transmit(struct lapb_cb *l
+ {
+ int used = 0;
+
+- if (lapb->callbacks.data_transmit) {
+- lapb->callbacks.data_transmit(lapb->dev, skb);
++ if (lapb->callbacks->data_transmit) {
++ lapb->callbacks->data_transmit(lapb->dev, skb);
+ used = 1;
+ }
+
diff -urNp linux-2.6.32.43/net/mac80211/cfg.c linux-2.6.32.43/net/mac80211/cfg.c
--- linux-2.6.32.43/net/mac80211/cfg.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/net/mac80211/cfg.c 2011-04-17 15:56:46.000000000 -0400
@@ -70875,6 +73987,27 @@ diff -urNp linux-2.6.32.43/net/unix/af_unix.c linux-2.6.32.43/net/unix/af_unix.c
atomic_read(&s->sk_refcnt),
0,
s->sk_state == TCP_LISTEN ? __SO_ACCEPTCON : 0,
+diff -urNp linux-2.6.32.43/net/wireless/core.c linux-2.6.32.43/net/wireless/core.c
+--- linux-2.6.32.43/net/wireless/core.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/net/wireless/core.c 2011-08-05 20:33:55.000000000 -0400
+@@ -367,7 +367,7 @@ struct wiphy *wiphy_new(const struct cfg
+
+ wiphy_net_set(&rdev->wiphy, &init_net);
+
+- rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
++ *(void **)&rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
+ rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
+ &rdev->wiphy.dev, RFKILL_TYPE_WLAN,
+ &rdev->rfkill_ops, rdev);
+@@ -505,7 +505,7 @@ void wiphy_rfkill_start_polling(struct w
+
+ if (!rdev->ops->rfkill_poll)
+ return;
+- rdev->rfkill_ops.poll = cfg80211_rfkill_poll;
++ *(void **)&rdev->rfkill_ops.poll = cfg80211_rfkill_poll;
+ rfkill_resume_polling(rdev->rfkill);
+ }
+ EXPORT_SYMBOL(wiphy_rfkill_start_polling);
diff -urNp linux-2.6.32.43/net/wireless/wext.c linux-2.6.32.43/net/wireless/wext.c
--- linux-2.6.32.43/net/wireless/wext.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/net/wireless/wext.c 2011-04-17 15:56:46.000000000 -0400
@@ -71061,6 +74194,13 @@ diff -urNp linux-2.6.32.43/scripts/basic/fixdep.c linux-2.6.32.43/scripts/basic/
if (*p != INT_CONF) {
fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
+diff -urNp linux-2.6.32.43/scripts/gcc-plugin.sh linux-2.6.32.43/scripts/gcc-plugin.sh
+--- linux-2.6.32.43/scripts/gcc-plugin.sh 1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.32.43/scripts/gcc-plugin.sh 2011-08-05 20:33:55.000000000 -0400
+@@ -0,0 +1,3 @@
++#!/bin/sh
++
++echo "#include \"gcc-plugin.h\"" | $* -x c - -c -o /dev/null -I`$* -print-file-name=plugin`/include>/dev/null 2>&1 && echo "y"
diff -urNp linux-2.6.32.43/scripts/Makefile.build linux-2.6.32.43/scripts/Makefile.build
--- linux-2.6.32.43/scripts/Makefile.build 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/scripts/Makefile.build 2011-06-04 20:46:51.000000000 -0400
@@ -72208,6 +75348,45 @@ diff -urNp linux-2.6.32.43/sound/aoa/codecs/onyx.h linux-2.6.32.43/sound/aoa/cod
/* PCM3052 register definitions */
+diff -urNp linux-2.6.32.43/sound/core/seq/seq_device.c linux-2.6.32.43/sound/core/seq/seq_device.c
+--- linux-2.6.32.43/sound/core/seq/seq_device.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/core/seq/seq_device.c 2011-08-05 20:33:55.000000000 -0400
+@@ -63,7 +63,7 @@ struct ops_list {
+ int argsize; /* argument size */
+
+ /* operators */
+- struct snd_seq_dev_ops ops;
++ struct snd_seq_dev_ops *ops;
+
+ /* registred devices */
+ struct list_head dev_list; /* list of devices */
+@@ -332,7 +332,7 @@ int snd_seq_device_register_driver(char
+
+ mutex_lock(&ops->reg_mutex);
+ /* copy driver operators */
+- ops->ops = *entry;
++ ops->ops = entry;
+ ops->driver |= DRIVER_LOADED;
+ ops->argsize = argsize;
+
+@@ -462,7 +462,7 @@ static int init_device(struct snd_seq_de
+ dev->name, ops->id, ops->argsize, dev->argsize);
+ return -EINVAL;
+ }
+- if (ops->ops.init_device(dev) >= 0) {
++ if (ops->ops->init_device(dev) >= 0) {
+ dev->status = SNDRV_SEQ_DEVICE_REGISTERED;
+ ops->num_init_devices++;
+ } else {
+@@ -489,7 +489,7 @@ static int free_device(struct snd_seq_de
+ dev->name, ops->id, ops->argsize, dev->argsize);
+ return -EINVAL;
+ }
+- if ((result = ops->ops.free_device(dev)) >= 0 || result == -ENXIO) {
++ if ((result = ops->ops->free_device(dev)) >= 0 || result == -ENXIO) {
+ dev->status = SNDRV_SEQ_DEVICE_FREE;
+ dev->driver_data = NULL;
+ ops->num_init_devices--;
diff -urNp linux-2.6.32.43/sound/drivers/mts64.c linux-2.6.32.43/sound/drivers/mts64.c
--- linux-2.6.32.43/sound/drivers/mts64.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/sound/drivers/mts64.c 2011-04-17 15:56:46.000000000 -0400
@@ -72267,6 +75446,18 @@ diff -urNp linux-2.6.32.43/sound/drivers/mts64.c linux-2.6.32.43/sound/drivers/m
return 0;
}
+diff -urNp linux-2.6.32.43/sound/drivers/opl4/opl4_lib.c linux-2.6.32.43/sound/drivers/opl4/opl4_lib.c
+--- linux-2.6.32.43/sound/drivers/opl4/opl4_lib.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/drivers/opl4/opl4_lib.c 2011-08-05 20:33:55.000000000 -0400
+@@ -27,7 +27,7 @@ MODULE_AUTHOR("Clemens Ladisch <clemens@
+ MODULE_DESCRIPTION("OPL4 driver");
+ MODULE_LICENSE("GPL");
+
+-static void inline snd_opl4_wait(struct snd_opl4 *opl4)
++static inline void snd_opl4_wait(struct snd_opl4 *opl4)
+ {
+ int timeout = 10;
+ while ((inb(opl4->fm_port) & OPL4_STATUS_BUSY) && --timeout > 0)
diff -urNp linux-2.6.32.43/sound/drivers/portman2x4.c linux-2.6.32.43/sound/drivers/portman2x4.c
--- linux-2.6.32.43/sound/drivers/portman2x4.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/sound/drivers/portman2x4.c 2011-04-17 15:56:46.000000000 -0400
@@ -72287,6 +75478,30 @@ diff -urNp linux-2.6.32.43/sound/drivers/portman2x4.c linux-2.6.32.43/sound/driv
int mode[PORTMAN_NUM_INPUT_PORTS];
struct snd_rawmidi_substream *midi_input[PORTMAN_NUM_INPUT_PORTS];
};
+diff -urNp linux-2.6.32.43/sound/isa/cmi8330.c linux-2.6.32.43/sound/isa/cmi8330.c
+--- linux-2.6.32.43/sound/isa/cmi8330.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/isa/cmi8330.c 2011-08-05 20:33:55.000000000 -0400
+@@ -455,16 +455,16 @@ static int __devinit snd_cmi8330_pcm(str
+
+ /* SB16 */
+ ops = snd_sb16dsp_get_pcm_ops(CMI_SB_STREAM);
+- chip->streams[CMI_SB_STREAM].ops = *ops;
++ memcpy((void *)&chip->streams[CMI_SB_STREAM].ops, ops, sizeof(*ops));
+ chip->streams[CMI_SB_STREAM].open = ops->open;
+- chip->streams[CMI_SB_STREAM].ops.open = cmi_open_callbacks[CMI_SB_STREAM];
++ *(void **)&chip->streams[CMI_SB_STREAM].ops.open = cmi_open_callbacks[CMI_SB_STREAM];
+ chip->streams[CMI_SB_STREAM].private_data = chip->sb;
+
+ /* AD1848 */
+ ops = snd_wss_get_pcm_ops(CMI_AD_STREAM);
+- chip->streams[CMI_AD_STREAM].ops = *ops;
++ memcpy((void *)&chip->streams[CMI_AD_STREAM].ops, ops, sizeof(*ops));
+ chip->streams[CMI_AD_STREAM].open = ops->open;
+- chip->streams[CMI_AD_STREAM].ops.open = cmi_open_callbacks[CMI_AD_STREAM];
++ *(void **)&chip->streams[CMI_AD_STREAM].ops.open = cmi_open_callbacks[CMI_AD_STREAM];
+ chip->streams[CMI_AD_STREAM].private_data = chip->wss;
+
+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &chip->streams[SNDRV_PCM_STREAM_PLAYBACK].ops);
diff -urNp linux-2.6.32.43/sound/oss/sb_audio.c linux-2.6.32.43/sound/oss/sb_audio.c
--- linux-2.6.32.43/sound/oss/sb_audio.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/sound/oss/sb_audio.c 2011-04-17 15:56:46.000000000 -0400
@@ -72639,9 +75854,424 @@ diff -urNp linux-2.6.32.43/sound/pci/ac97/ac97_patch.c linux-2.6.32.43/sound/pci
.build_specific = patch_ucb1400_specific,
};
+diff -urNp linux-2.6.32.43/sound/pci/hda/hda_codec.h linux-2.6.32.43/sound/pci/hda/hda_codec.h
+--- linux-2.6.32.43/sound/pci/hda/hda_codec.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/hda_codec.h 2011-08-05 20:33:55.000000000 -0400
+@@ -580,7 +580,7 @@ struct hda_bus_ops {
+ /* notify power-up/down from codec to controller */
+ void (*pm_notify)(struct hda_bus *bus);
+ #endif
+-};
++} __no_const;
+
+ /* template to pass to the bus constructor */
+ struct hda_bus_template {
+@@ -705,7 +705,7 @@ struct hda_pcm_ops {
+ struct snd_pcm_substream *substream);
+ int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
+ struct snd_pcm_substream *substream);
+-};
++} __no_const;
+
+ /* PCM information for each substream */
+ struct hda_pcm_stream {
+diff -urNp linux-2.6.32.43/sound/pci/hda/hda_generic.c linux-2.6.32.43/sound/pci/hda/hda_generic.c
+--- linux-2.6.32.43/sound/pci/hda/hda_generic.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/hda_generic.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1097,7 +1097,7 @@ int snd_hda_parse_generic_codec(struct h
+ (err = parse_output(codec)) < 0)
+ goto error;
+
+- codec->patch_ops = generic_patch_ops;
++ memcpy((void *)&codec->patch_ops, &generic_patch_ops, sizeof(generic_patch_ops));
+
+ return 0;
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_analog.c linux-2.6.32.43/sound/pci/hda/patch_analog.c
+--- linux-2.6.32.43/sound/pci/hda/patch_analog.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_analog.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1069,7 +1069,7 @@ static int patch_ad1986a(struct hda_code
+ #endif
+ spec->vmaster_nid = 0x1b;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ /* override some parameters */
+ board_config = snd_hda_check_board_config(codec, AD1986A_MODELS,
+@@ -1120,8 +1120,8 @@ static int patch_ad1986a(struct hda_code
+ if (!is_jack_available(codec, 0x25))
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1986a_automic_capture_source;
+- codec->patch_ops.unsol_event = ad1986a_automic_unsol_event;
+- codec->patch_ops.init = ad1986a_automic_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1986a_automic_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1986a_automic_init;
+ break;
+ case AD1986A_SAMSUNG_P50:
+ spec->num_mixers = 2;
+@@ -1137,8 +1137,8 @@ static int patch_ad1986a(struct hda_code
+ if (!is_jack_available(codec, 0x25))
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1986a_automic_capture_source;
+- codec->patch_ops.unsol_event = ad1986a_samsung_p50_unsol_event;
+- codec->patch_ops.init = ad1986a_samsung_p50_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1986a_samsung_p50_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1986a_samsung_p50_init;
+ break;
+ case AD1986A_LAPTOP_AUTOMUTE:
+ spec->num_mixers = 3;
+@@ -1154,8 +1154,8 @@ static int patch_ad1986a(struct hda_code
+ if (!is_jack_available(codec, 0x25))
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1986a_laptop_eapd_capture_source;
+- codec->patch_ops.unsol_event = ad1986a_hp_unsol_event;
+- codec->patch_ops.init = ad1986a_hp_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1986a_hp_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1986a_hp_init;
+ /* Lenovo N100 seems to report the reversed bit
+ * for HP jack-sensing
+ */
+@@ -1363,7 +1363,7 @@ static int patch_ad1983(struct hda_codec
+ #endif
+ spec->vmaster_nid = 0x05;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ return 0;
+ }
+@@ -1769,7 +1769,7 @@ static int patch_ad1981(struct hda_codec
+ #endif
+ spec->vmaster_nid = 0x05;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ /* override some parameters */
+ board_config = snd_hda_check_board_config(codec, AD1981_MODELS,
+@@ -1783,8 +1783,8 @@ static int patch_ad1981(struct hda_codec
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1981_hp_capture_source;
+
+- codec->patch_ops.init = ad1981_hp_init;
+- codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1981_hp_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
+ break;
+ case AD1981_THINKPAD:
+ spec->mixers[0] = ad1981_thinkpad_mixers;
+@@ -1805,8 +1805,8 @@ static int patch_ad1981(struct hda_codec
+ spec->init_verbs[1] = ad1981_toshiba_init_verbs;
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1981_hp_capture_source;
+- codec->patch_ops.init = ad1981_hp_init;
+- codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1981_hp_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1981_hp_unsol_event;
+ break;
+ }
+ return 0;
+@@ -3096,14 +3096,14 @@ static int patch_ad1988(struct hda_codec
+ if (spec->dig_in_nid && codec->vendor_id < 0x11d4989a)
+ spec->mixers[spec->num_mixers++] = ad1988_spdif_in_mixers;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+ switch (board_config) {
+ case AD1988_AUTO:
+- codec->patch_ops.init = ad1988_auto_init;
++ *(void **)&codec->patch_ops.init = ad1988_auto_init;
+ break;
+ case AD1988_LAPTOP:
+ case AD1988_LAPTOP_DIG:
+- codec->patch_ops.unsol_event = ad1988_laptop_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = ad1988_laptop_unsol_event;
+ break;
+ }
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -3321,7 +3321,7 @@ static int patch_ad1884(struct hda_codec
+ /* we need to cover all playback volumes */
+ spec->slave_vols = ad1884_slave_vols;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ return 0;
+ }
+@@ -3529,7 +3529,7 @@ static int patch_ad1984(struct hda_codec
+ case AD1984_BASIC:
+ /* additional digital mics */
+ spec->mixers[spec->num_mixers++] = ad1984_dmic_mixers;
+- codec->patch_ops.build_pcms = ad1984_build_pcms;
++ *(void **)&codec->patch_ops.build_pcms = ad1984_build_pcms;
+ break;
+ case AD1984_THINKPAD:
+ spec->multiout.dig_out_nid = AD1884_SPDIF_OUT;
+@@ -4229,7 +4229,7 @@ static int patch_ad1884a(struct hda_code
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = ad1884a_loopbacks;
+ #endif
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ /* override some parameters */
+ board_config = snd_hda_check_board_config(codec, AD1884A_MODELS,
+@@ -4240,8 +4240,8 @@ static int patch_ad1884a(struct hda_code
+ spec->mixers[0] = ad1884a_laptop_mixers;
+ spec->init_verbs[spec->num_init_verbs++] = ad1884a_laptop_verbs;
+ spec->multiout.dig_out_nid = 0;
+- codec->patch_ops.unsol_event = ad1884a_laptop_unsol_event;
+- codec->patch_ops.init = ad1884a_laptop_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1884a_laptop_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1884a_laptop_init;
+ /* set the upper-limit for mixer amp to 0dB for avoiding the
+ * possible damage by overloading
+ */
+@@ -4255,8 +4255,8 @@ static int patch_ad1884a(struct hda_code
+ spec->mixers[0] = ad1884a_mobile_mixers;
+ spec->init_verbs[0] = ad1884a_mobile_verbs;
+ spec->multiout.dig_out_nid = 0;
+- codec->patch_ops.unsol_event = ad1884a_hp_unsol_event;
+- codec->patch_ops.init = ad1884a_hp_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1884a_hp_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1884a_hp_init;
+ /* set the upper-limit for mixer amp to 0dB for avoiding the
+ * possible damage by overloading
+ */
+@@ -4272,15 +4272,15 @@ static int patch_ad1884a(struct hda_code
+ ad1984a_thinkpad_verbs;
+ spec->multiout.dig_out_nid = 0;
+ spec->input_mux = &ad1984a_thinkpad_capture_source;
+- codec->patch_ops.unsol_event = ad1984a_thinkpad_unsol_event;
+- codec->patch_ops.init = ad1984a_thinkpad_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1984a_thinkpad_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1984a_thinkpad_init;
+ break;
+ case AD1984A_TOUCHSMART:
+ spec->mixers[0] = ad1984a_touchsmart_mixers;
+ spec->init_verbs[0] = ad1984a_touchsmart_verbs;
+ spec->multiout.dig_out_nid = 0;
+- codec->patch_ops.unsol_event = ad1984a_touchsmart_unsol_event;
+- codec->patch_ops.init = ad1984a_touchsmart_init;
++ *(void **)&codec->patch_ops.unsol_event = ad1984a_touchsmart_unsol_event;
++ *(void **)&codec->patch_ops.init = ad1984a_touchsmart_init;
+ /* set the upper-limit for mixer amp to 0dB for avoiding the
+ * possible damage by overloading
+ */
+@@ -4607,7 +4607,7 @@ static int patch_ad1882(struct hda_codec
+ #endif
+ spec->vmaster_nid = 0x04;
+
+- codec->patch_ops = ad198x_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ad198x_patch_ops, sizeof(ad198x_patch_ops));
+
+ /* override some parameters */
+ board_config = snd_hda_check_board_config(codec, AD1882_MODELS,
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_atihdmi.c linux-2.6.32.43/sound/pci/hda/patch_atihdmi.c
+--- linux-2.6.32.43/sound/pci/hda/patch_atihdmi.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_atihdmi.c 2011-08-05 20:33:55.000000000 -0400
+@@ -177,7 +177,7 @@ static int patch_atihdmi(struct hda_code
+ */
+ spec->multiout.dig_out_nid = CVT_NID;
+
+- codec->patch_ops = atihdmi_patch_ops;
++ memcpy((void *)&codec->patch_ops, &atihdmi_patch_ops, sizeof(atihdmi_patch_ops));
+
+ return 0;
+ }
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_ca0110.c linux-2.6.32.43/sound/pci/hda/patch_ca0110.c
+--- linux-2.6.32.43/sound/pci/hda/patch_ca0110.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_ca0110.c 2011-08-05 20:33:55.000000000 -0400
+@@ -525,7 +525,7 @@ static int patch_ca0110(struct hda_codec
+ if (err < 0)
+ goto error;
+
+- codec->patch_ops = ca0110_patch_ops;
++ memcpy((void *)&codec->patch_ops, &ca0110_patch_ops, sizeof(ca0110_patch_ops));
+
+ return 0;
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_cirrus.c linux-2.6.32.43/sound/pci/hda/patch_cirrus.c
+--- linux-2.6.32.43/sound/pci/hda/patch_cirrus.c 2011-05-10 22:12:02.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_cirrus.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1191,7 +1191,7 @@ static int patch_cs420x(struct hda_codec
+ if (err < 0)
+ goto error;
+
+- codec->patch_ops = cs_patch_ops;
++ memcpy((void *)&codec->patch_ops, &cs_patch_ops, sizeof(cs_patch_ops));
+
+ return 0;
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_cmedia.c linux-2.6.32.43/sound/pci/hda/patch_cmedia.c
+--- linux-2.6.32.43/sound/pci/hda/patch_cmedia.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_cmedia.c 2011-08-05 20:33:55.000000000 -0400
+@@ -728,7 +728,7 @@ static int patch_cmi9880(struct hda_code
+
+ spec->adc_nids = cmi9880_adc_nids;
+
+- codec->patch_ops = cmi9880_patch_ops;
++ memcpy((void *)&codec->patch_ops, &cmi9880_patch_ops, sizeof(cmi9880_patch_ops));
+
+ return 0;
+ }
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_conexant.c linux-2.6.32.43/sound/pci/hda/patch_conexant.c
+--- linux-2.6.32.43/sound/pci/hda/patch_conexant.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_conexant.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1119,55 +1119,55 @@ static int patch_cxt5045(struct hda_code
+ spec->channel_mode = cxt5045_modes,
+
+
+- codec->patch_ops = conexant_patch_ops;
++ memcpy((void *)&codec->patch_ops, &conexant_patch_ops, sizeof(conexant_patch_ops));
+
+ board_config = snd_hda_check_board_config(codec, CXT5045_MODELS,
+ cxt5045_models,
+ cxt5045_cfg_tbl);
+ switch (board_config) {
+ case CXT5045_LAPTOP_HPSENSE:
+- codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
+ spec->input_mux = &cxt5045_capture_source;
+ spec->num_init_verbs = 2;
+ spec->init_verbs[1] = cxt5045_hp_sense_init_verbs;
+ spec->mixers[0] = cxt5045_mixers;
+- codec->patch_ops.init = cxt5045_init;
++ *(void **)&codec->patch_ops.init = cxt5045_init;
+ break;
+ case CXT5045_LAPTOP_MICSENSE:
+- codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
+ spec->input_mux = &cxt5045_capture_source;
+ spec->num_init_verbs = 2;
+ spec->init_verbs[1] = cxt5045_mic_sense_init_verbs;
+ spec->mixers[0] = cxt5045_mixers;
+- codec->patch_ops.init = cxt5045_init;
++ *(void **)&codec->patch_ops.init = cxt5045_init;
+ break;
+ default:
+ case CXT5045_LAPTOP_HPMICSENSE:
+- codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
+ spec->input_mux = &cxt5045_capture_source;
+ spec->num_init_verbs = 3;
+ spec->init_verbs[1] = cxt5045_hp_sense_init_verbs;
+ spec->init_verbs[2] = cxt5045_mic_sense_init_verbs;
+ spec->mixers[0] = cxt5045_mixers;
+- codec->patch_ops.init = cxt5045_init;
++ *(void **)&codec->patch_ops.init = cxt5045_init;
+ break;
+ case CXT5045_BENQ:
+- codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
+ spec->input_mux = &cxt5045_capture_source_benq;
+ spec->num_init_verbs = 1;
+ spec->init_verbs[0] = cxt5045_benq_init_verbs;
+ spec->mixers[0] = cxt5045_mixers;
+ spec->mixers[1] = cxt5045_benq_mixers;
+ spec->num_mixers = 2;
+- codec->patch_ops.init = cxt5045_init;
++ *(void **)&codec->patch_ops.init = cxt5045_init;
+ break;
+ case CXT5045_LAPTOP_HP530:
+- codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
+ spec->input_mux = &cxt5045_capture_source_hp530;
+ spec->num_init_verbs = 2;
+ spec->init_verbs[1] = cxt5045_hp_sense_init_verbs;
+ spec->mixers[0] = cxt5045_mixers_hp530;
+- codec->patch_ops.init = cxt5045_init;
++ *(void **)&codec->patch_ops.init = cxt5045_init;
+ break;
+ #ifdef CONFIG_SND_DEBUG
+ case CXT5045_TEST:
+@@ -1556,7 +1556,7 @@ static int patch_cxt5047(struct hda_code
+ spec->num_channel_mode = ARRAY_SIZE(cxt5047_modes),
+ spec->channel_mode = cxt5047_modes,
+
+- codec->patch_ops = conexant_patch_ops;
++ memcpy((void *)&codec->patch_ops, &conexant_patch_ops, sizeof(conexant_patch_ops));
+
+ board_config = snd_hda_check_board_config(codec, CXT5047_MODELS,
+ cxt5047_models,
+@@ -1565,13 +1565,13 @@ static int patch_cxt5047(struct hda_code
+ case CXT5047_LAPTOP:
+ spec->num_mixers = 2;
+ spec->mixers[1] = cxt5047_hp_spk_mixers;
+- codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
+ break;
+ case CXT5047_LAPTOP_HP:
+ spec->num_mixers = 2;
+ spec->mixers[1] = cxt5047_hp_only_mixers;
+- codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
+- codec->patch_ops.init = cxt5047_hp_init;
++ *(void **)&codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
++ *(void **)&codec->patch_ops.init = cxt5047_hp_init;
+ break;
+ case CXT5047_LAPTOP_EAPD:
+ spec->input_mux = &cxt5047_toshiba_capture_source;
+@@ -1579,14 +1579,14 @@ static int patch_cxt5047(struct hda_code
+ spec->mixers[1] = cxt5047_hp_spk_mixers;
+ spec->num_init_verbs = 2;
+ spec->init_verbs[1] = cxt5047_toshiba_init_verbs;
+- codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
+ break;
+ #ifdef CONFIG_SND_DEBUG
+ case CXT5047_TEST:
+ spec->input_mux = &cxt5047_test_capture_source;
+ spec->mixers[0] = cxt5047_test_mixer;
+ spec->init_verbs[0] = cxt5047_test_init_verbs;
+- codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5047_hp_unsol_event;
+ #endif
+ }
+ spec->vmaster_nid = 0x13;
+@@ -1904,8 +1904,8 @@ static int patch_cxt5051(struct hda_code
+ codec->spec = spec;
+ codec->pin_amp_workaround = 1;
+
+- codec->patch_ops = conexant_patch_ops;
+- codec->patch_ops.init = cxt5051_init;
++ memcpy((void *)&codec->patch_ops, &conexant_patch_ops, sizeof(conexant_patch_ops));
++ *(void **)&codec->patch_ops.init = cxt5051_init;
+
+ spec->multiout.max_channels = 2;
+ spec->multiout.num_dacs = ARRAY_SIZE(cxt5051_dac_nids);
+@@ -1923,7 +1923,7 @@ static int patch_cxt5051(struct hda_code
+ spec->cur_adc = 0;
+ spec->cur_adc_idx = 0;
+
+- codec->patch_ops.unsol_event = cxt5051_hp_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5051_hp_unsol_event;
+
+ board_config = snd_hda_check_board_config(codec, CXT5051_MODELS,
+ cxt5051_models,
+@@ -2372,8 +2372,8 @@ static int patch_cxt5066(struct hda_code
+ return -ENOMEM;
+ codec->spec = spec;
+
+- codec->patch_ops = conexant_patch_ops;
+- codec->patch_ops.init = cxt5066_init;
++ memcpy((void *)&codec->patch_ops, &conexant_patch_ops, sizeof(conexant_patch_ops));
++ *(void **)&codec->patch_ops.init = cxt5066_init;
+
+ spec->dell_automute = 0;
+ spec->multiout.max_channels = 2;
+@@ -2413,7 +2413,7 @@ static int patch_cxt5066(struct hda_code
+ spec->dell_automute = 1;
+ break;
+ case CXT5066_OLPC_XO_1_5:
+- codec->patch_ops.unsol_event = cxt5066_unsol_event;
++ *(void **)&codec->patch_ops.unsol_event = cxt5066_unsol_event;
+ spec->init_verbs[0] = cxt5066_init_verbs_olpc;
+ spec->mixers[spec->num_mixers++] = cxt5066_mixer_master_olpc;
+ spec->mixers[spec->num_mixers++] = cxt5066_mixers;
diff -urNp linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c
--- linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c 2011-04-17 15:56:46.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c 2011-08-05 20:33:55.000000000 -0400
@@ -511,10 +511,10 @@ static void hdmi_non_intrinsic_event(str
cp_ready);
@@ -72657,6 +76287,345 @@ diff -urNp linux-2.6.32.43/sound/pci/hda/patch_intelhdmi.c linux-2.6.32.43/sound
}
+@@ -656,7 +656,7 @@ static int do_patch_intel_hdmi(struct hd
+ spec->multiout.dig_out_nid = cvt_nid;
+
+ codec->spec = spec;
+- codec->patch_ops = intel_hdmi_patch_ops;
++ memcpy((void *)&codec->patch_ops, &intel_hdmi_patch_ops, sizeof(intel_hdmi_patch_ops));
+
+ snd_hda_eld_proc_new(codec, &spec->sink_eld);
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_nvhdmi.c linux-2.6.32.43/sound/pci/hda/patch_nvhdmi.c
+--- linux-2.6.32.43/sound/pci/hda/patch_nvhdmi.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_nvhdmi.c 2011-08-05 20:33:55.000000000 -0400
+@@ -367,7 +367,7 @@ static int patch_nvhdmi_8ch(struct hda_c
+ spec->multiout.max_channels = 8;
+ spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
+
+- codec->patch_ops = nvhdmi_patch_ops_8ch;
++ memcpy((void *)&codec->patch_ops, &nvhdmi_patch_ops_8ch, sizeof(nvhdmi_patch_ops_8ch));
+
+ return 0;
+ }
+@@ -386,7 +386,7 @@ static int patch_nvhdmi_2ch(struct hda_c
+ spec->multiout.max_channels = 2;
+ spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
+
+- codec->patch_ops = nvhdmi_patch_ops_2ch;
++ memcpy((void *)&codec->patch_ops, &nvhdmi_patch_ops_2ch, sizeof(nvhdmi_patch_ops_2ch));
+
+ return 0;
+ }
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_realtek.c linux-2.6.32.43/sound/pci/hda/patch_realtek.c
+--- linux-2.6.32.43/sound/pci/hda/patch_realtek.c 2011-06-25 12:55:35.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_realtek.c 2011-08-05 20:33:55.000000000 -0400
+@@ -4856,7 +4856,7 @@ static int patch_alc880(struct hda_codec
+
+ spec->vmaster_nid = 0x0c;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC880_AUTO)
+ spec->init_hook = alc880_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -6479,7 +6479,7 @@ static int patch_alc260(struct hda_codec
+
+ spec->vmaster_nid = 0x08;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC260_AUTO)
+ spec->init_hook = alc260_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -9997,7 +9997,7 @@ static int patch_alc882(struct hda_codec
+
+ spec->vmaster_nid = 0x0c;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC882_AUTO)
+ spec->init_hook = alc882_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -11871,7 +11871,7 @@ static int patch_alc262(struct hda_codec
+
+ spec->vmaster_nid = 0x0c;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC262_AUTO)
+ spec->init_hook = alc262_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -12950,7 +12950,7 @@ static int patch_alc268(struct hda_codec
+
+ spec->vmaster_nid = 0x02;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC268_AUTO)
+ spec->init_hook = alc268_auto_init;
+
+@@ -13636,7 +13636,7 @@ static int patch_alc269(struct hda_codec
+
+ spec->vmaster_nid = 0x02;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC269_AUTO)
+ spec->init_hook = alc269_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -14741,7 +14741,7 @@ static int patch_alc861(struct hda_codec
+
+ spec->vmaster_nid = 0x03;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC861_AUTO)
+ spec->init_hook = alc861_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+@@ -15727,7 +15727,7 @@ static int patch_alc861vd(struct hda_cod
+
+ spec->vmaster_nid = 0x02;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+
+ if (board_config == ALC861VD_AUTO)
+ spec->init_hook = alc861vd_auto_init;
+@@ -17652,7 +17652,7 @@ static int patch_alc662(struct hda_codec
+
+ spec->vmaster_nid = 0x02;
+
+- codec->patch_ops = alc_patch_ops;
++ memcpy((void *)&codec->patch_ops, &alc_patch_ops, sizeof(alc_patch_ops));
+ if (board_config == ALC662_AUTO)
+ spec->init_hook = alc662_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_si3054.c linux-2.6.32.43/sound/pci/hda/patch_si3054.c
+--- linux-2.6.32.43/sound/pci/hda/patch_si3054.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_si3054.c 2011-08-05 20:33:55.000000000 -0400
+@@ -275,7 +275,7 @@ static int patch_si3054(struct hda_codec
+ if (spec == NULL)
+ return -ENOMEM;
+ codec->spec = spec;
+- codec->patch_ops = si3054_patch_ops;
++ memcpy((void *)&codec->patch_ops, &si3054_patch_ops, sizeof(si3054_patch_ops));
+ return 0;
+ }
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_sigmatel.c linux-2.6.32.43/sound/pci/hda/patch_sigmatel.c
+--- linux-2.6.32.43/sound/pci/hda/patch_sigmatel.c 2011-06-25 12:55:35.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_sigmatel.c 2011-08-05 20:33:55.000000000 -0400
+@@ -4899,7 +4899,7 @@ static int patch_stac9200(struct hda_cod
+ if (spec->board_config == STAC_9200_PANASONIC)
+ spec->hp_detect = 0;
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ return 0;
+ }
+@@ -4981,7 +4981,7 @@ static int patch_stac925x(struct hda_cod
+ return err;
+ }
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ return 0;
+ }
+@@ -5125,7 +5125,7 @@ again:
+ if (spec->board_config == STAC_92HD73XX_NO_JD)
+ spec->hp_detect = 0;
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ codec->proc_widget_hook = stac92hd7x_proc_hook;
+
+@@ -5220,7 +5220,7 @@ again:
+ snd_hda_codec_write_cache(codec, nid, 0,
+ AC_VERB_SET_CONNECT_SEL, num_dacs);
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ codec->proc_widget_hook = stac92hd_proc_hook;
+
+@@ -5294,7 +5294,7 @@ static int patch_stac92hd71bxx(struct hd
+ return -ENOMEM;
+
+ codec->spec = spec;
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+ spec->num_pins = STAC92HD71BXX_NUM_PINS;
+ switch (codec->vendor_id) {
+ case 0x111d76b6:
+@@ -5515,7 +5515,7 @@ again:
+ spec->gpio_dir |= spec->gpio_led;
+ spec->gpio_data |= spec->gpio_led;
+ /* register check_power_status callback. */
+- codec->patch_ops.check_power_status =
++ *(void **)&codec->patch_ops.check_power_status =
+ stac92xx_hp_check_power_status;
+ }
+ #endif
+@@ -5634,7 +5634,7 @@ static int patch_stac922x(struct hda_cod
+ return err;
+ }
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ /* Fix Mux capture level; max to 2 */
+ snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT,
+@@ -5757,7 +5757,7 @@ static int patch_stac927x(struct hda_cod
+ return err;
+ }
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ codec->proc_widget_hook = stac927x_proc_hook;
+
+@@ -5880,7 +5880,7 @@ static int patch_stac9205(struct hda_cod
+ return err;
+ }
+
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+
+ codec->proc_widget_hook = stac9205_proc_hook;
+
+@@ -5974,7 +5974,7 @@ static int patch_stac9872(struct hda_cod
+ return -EINVAL;
+ }
+ spec->input_mux = &spec->private_imux;
+- codec->patch_ops = stac92xx_patch_ops;
++ memcpy((void *)&codec->patch_ops, &stac92xx_patch_ops, sizeof(stac92xx_patch_ops));
+ return 0;
+ }
+
+diff -urNp linux-2.6.32.43/sound/pci/hda/patch_via.c linux-2.6.32.43/sound/pci/hda/patch_via.c
+--- linux-2.6.32.43/sound/pci/hda/patch_via.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/hda/patch_via.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1399,9 +1399,9 @@ static int patch_vt1708(struct hda_codec
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.init = via_auto_init;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1708_loopbacks;
+ #endif
+@@ -1870,10 +1870,10 @@ static int patch_vt1709_10ch(struct hda_
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1709_loopbacks;
+ #endif
+@@ -1964,10 +1964,10 @@ static int patch_vt1709_6ch(struct hda_c
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1709_loopbacks;
+ #endif
+@@ -2418,10 +2418,10 @@ static int patch_vt1708B_8ch(struct hda_
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1708B_loopbacks;
+ #endif
+@@ -2470,10 +2470,10 @@ static int patch_vt1708B_4ch(struct hda_
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1708B_loopbacks;
+ #endif
+@@ -2905,10 +2905,10 @@ static int patch_vt1708S(struct hda_code
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1708S_loopbacks;
+ #endif
+@@ -3223,10 +3223,10 @@ static int patch_vt1702(struct hda_codec
+ spec->num_mixers++;
+ }
+
+- codec->patch_ops = via_patch_ops;
++ memcpy((void *)&codec->patch_ops, &via_patch_ops, sizeof(via_patch_ops));
+
+- codec->patch_ops.init = via_auto_init;
+- codec->patch_ops.unsol_event = via_unsol_event;
++ *(void **)&codec->patch_ops.init = via_auto_init;
++ *(void **)&codec->patch_ops.unsol_event = via_unsol_event;
+ #ifdef CONFIG_SND_HDA_POWER_SAVE
+ spec->loopback.amplist = vt1702_loopbacks;
+ #endif
+diff -urNp linux-2.6.32.43/sound/pci/ice1712/ice1712.h linux-2.6.32.43/sound/pci/ice1712/ice1712.h
+--- linux-2.6.32.43/sound/pci/ice1712/ice1712.h 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/pci/ice1712/ice1712.h 2011-08-05 20:33:55.000000000 -0400
+@@ -269,7 +269,7 @@ struct snd_ak4xxx_private {
+ unsigned int mask_flags; /* total mask bits */
+ struct snd_akm4xxx_ops {
+ void (*set_rate_val)(struct snd_akm4xxx *ak, unsigned int rate);
+- } ops;
++ } __no_const ops;
+ };
+
+ struct snd_ice1712_spdif {
+@@ -285,7 +285,7 @@ struct snd_ice1712_spdif {
+ int (*default_put)(struct snd_ice1712 *, struct snd_ctl_elem_value *ucontrol);
+ void (*stream_get)(struct snd_ice1712 *, struct snd_ctl_elem_value *ucontrol);
+ int (*stream_put)(struct snd_ice1712 *, struct snd_ctl_elem_value *ucontrol);
+- } ops;
++ } __no_const ops;
+ };
+
+
diff -urNp linux-2.6.32.43/sound/pci/intel8x0m.c linux-2.6.32.43/sound/pci/intel8x0m.c
--- linux-2.6.32.43/sound/pci/intel8x0m.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/sound/pci/intel8x0m.c 2011-04-23 12:56:12.000000000 -0400
@@ -72712,10 +76681,250 @@ diff -urNp linux-2.6.32.43/sound/pci/ymfpci/ymfpci_main.c linux-2.6.32.43/sound/
chip->card = card;
chip->pci = pci;
chip->irq = -1;
+diff -urNp linux-2.6.32.43/sound/soc/soc-core.c linux-2.6.32.43/sound/soc/soc-core.c
+--- linux-2.6.32.43/sound/soc/soc-core.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/soc/soc-core.c 2011-08-05 20:33:55.000000000 -0400
+@@ -1107,13 +1107,13 @@ static int soc_new_pcm(struct snd_soc_de
+
+ dai_link->pcm = pcm;
+ pcm->private_data = rtd;
+- soc_pcm_ops.mmap = platform->pcm_ops->mmap;
+- soc_pcm_ops.pointer = platform->pcm_ops->pointer;
+- soc_pcm_ops.ioctl = platform->pcm_ops->ioctl;
+- soc_pcm_ops.copy = platform->pcm_ops->copy;
+- soc_pcm_ops.silence = platform->pcm_ops->silence;
+- soc_pcm_ops.ack = platform->pcm_ops->ack;
+- soc_pcm_ops.page = platform->pcm_ops->page;
++ *(void **)&soc_pcm_ops.mmap = platform->pcm_ops->mmap;
++ *(void **)&soc_pcm_ops.pointer = platform->pcm_ops->pointer;
++ *(void **)&soc_pcm_ops.ioctl = platform->pcm_ops->ioctl;
++ *(void **)&soc_pcm_ops.copy = platform->pcm_ops->copy;
++ *(void **)&soc_pcm_ops.silence = platform->pcm_ops->silence;
++ *(void **)&soc_pcm_ops.ack = platform->pcm_ops->ack;
++ *(void **)&soc_pcm_ops.page = platform->pcm_ops->page;
+
+ if (playback)
+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops);
+diff -urNp linux-2.6.32.43/sound/usb/usbaudio.c linux-2.6.32.43/sound/usb/usbaudio.c
+--- linux-2.6.32.43/sound/usb/usbaudio.c 2011-03-27 14:31:47.000000000 -0400
++++ linux-2.6.32.43/sound/usb/usbaudio.c 2011-08-05 20:33:55.000000000 -0400
+@@ -963,12 +963,12 @@ static int snd_usb_pcm_playback_trigger(
+ switch (cmd) {
+ case SNDRV_PCM_TRIGGER_START:
+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+- subs->ops.prepare = prepare_playback_urb;
++ *(void **)&subs->ops.prepare = prepare_playback_urb;
+ return 0;
+ case SNDRV_PCM_TRIGGER_STOP:
+ return deactivate_urbs(subs, 0, 0);
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+- subs->ops.prepare = prepare_nodata_playback_urb;
++ *(void **)&subs->ops.prepare = prepare_nodata_playback_urb;
+ return 0;
+ default:
+ return -EINVAL;
+@@ -985,15 +985,15 @@ static int snd_usb_pcm_capture_trigger(s
+
+ switch (cmd) {
+ case SNDRV_PCM_TRIGGER_START:
+- subs->ops.retire = retire_capture_urb;
++ *(void **)&subs->ops.retire = retire_capture_urb;
+ return start_urbs(subs, substream->runtime);
+ case SNDRV_PCM_TRIGGER_STOP:
+ return deactivate_urbs(subs, 0, 0);
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+- subs->ops.retire = retire_paused_capture_urb;
++ *(void **)&subs->ops.retire = retire_paused_capture_urb;
+ return 0;
+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+- subs->ops.retire = retire_capture_urb;
++ *(void **)&subs->ops.retire = retire_capture_urb;
+ return 0;
+ default:
+ return -EINVAL;
+@@ -1542,7 +1542,7 @@ static int snd_usb_pcm_prepare(struct sn
+ /* for playback, submit the URBs now; otherwise, the first hwptr_done
+ * updates for all URBs would happen at the same time when starting */
+ if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) {
+- subs->ops.prepare = prepare_nodata_playback_urb;
++ *(void **)&subs->ops.prepare = prepare_nodata_playback_urb;
+ return start_urbs(subs, runtime);
+ } else
+ return 0;
+@@ -2228,14 +2228,14 @@ static void init_substream(struct snd_us
+ subs->direction = stream;
+ subs->dev = as->chip->dev;
+ if (snd_usb_get_speed(subs->dev) == USB_SPEED_FULL) {
+- subs->ops = audio_urb_ops[stream];
++ memcpy((void *)&subs->ops, &audio_urb_ops[stream], sizeof(subs->ops));
+ } else {
+- subs->ops = audio_urb_ops_high_speed[stream];
++ memcpy((void *)&subs->ops, &audio_urb_ops_high_speed[stream], sizeof(subs->ops));
+ switch (as->chip->usb_id) {
+ case USB_ID(0x041e, 0x3f02): /* E-Mu 0202 USB */
+ case USB_ID(0x041e, 0x3f04): /* E-Mu 0404 USB */
+ case USB_ID(0x041e, 0x3f0a): /* E-Mu Tracker Pre */
+- subs->ops.retire_sync = retire_playback_sync_urb_hs_emu;
++ *(void **)&subs->ops.retire_sync = retire_playback_sync_urb_hs_emu;
+ break;
+ }
+ }
+diff -urNp linux-2.6.32.43/tools/gcc/constify_plugin.c linux-2.6.32.43/tools/gcc/constify_plugin.c
+--- linux-2.6.32.43/tools/gcc/constify_plugin.c 1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.32.43/tools/gcc/constify_plugin.c 2011-08-05 20:33:55.000000000 -0400
+@@ -0,0 +1,147 @@
++/*
++ * Copyright 2011 by Emese Revfy <re.emese@gmail.com>
++ * Licensed under the GPL v2, or (at your option) v3
++ *
++ * This gcc plugin constifies all structures which contain only function pointers and const fields.
++ *
++ * Usage:
++ * $ gcc -I`gcc -print-file-name=plugin`/include -fPIC -shared -O2 -o const_plugin.so const_plugin.c
++ * $ gcc -fplugin=const_plugin.so test.c -O2
++ */
++
++#include "gcc-plugin.h"
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tree.h"
++#include "tree-pass.h"
++#include "intl.h"
++#include "plugin-version.h"
++#include "tm.h"
++#include "toplev.h"
++#include "function.h"
++#include "tree-flow.h"
++#include "plugin.h"
++
++int plugin_is_GPL_compatible;
++
++static struct plugin_info const_plugin_info = {
++ .version = "20110706",
++ .help = "no-constify\tturn off constification\n",
++};
++
++static tree handle_no_const_attribute(tree *node, tree name, tree args, int flags, bool *no_add_attrs)
++{
++ return NULL_TREE;
++}
++
++static struct attribute_spec no_const_attr = {
++ .name = "no_const",
++ .min_length = 0,
++ .max_length = 0,
++ .decl_required = false,
++ .type_required = false,
++ .function_type_required = false,
++ .handler = handle_no_const_attribute
++};
++
++static void register_attributes(void *event_data, void *data)
++{
++ register_attribute(&no_const_attr);
++}
++
++/*
++static void printnode(char *prefix, tree node)
++{
++ enum tree_code code;
++ enum tree_code_class tclass;
++
++ tclass = TREE_CODE_CLASS(TREE_CODE (node));
++
++ code = TREE_CODE(node);
++ fprintf(stderr, "\n%s node: %p, code: %d type: %s\n", prefix, node, code, tree_code_name[(int)code]);
++ if (DECL_CONTEXT(node) != NULL_TREE && TYPE_NAME(DECL_CONTEXT(node)) != NULL_TREE)
++ fprintf(stderr, "struct name: %s\n", IDENTIFIER_POINTER(TYPE_NAME(DECL_CONTEXT(node))));
++ if (tclass == tcc_declaration && DECL_NAME(node) != NULL_TREE)
++ fprintf(stderr, "field name: %s\n", IDENTIFIER_POINTER(DECL_NAME(node)));
++}
++*/
++
++static void constify_node(tree node)
++{
++ TREE_READONLY(node) = 1;
++}
++
++static bool is_fptr(tree field)
++{
++ tree ptr = TREE_TYPE(field);
++
++ if (TREE_CODE(ptr) != POINTER_TYPE)
++ return false;
++
++ return TREE_CODE(TREE_TYPE(ptr)) == FUNCTION_TYPE;
++}
++
++static bool walk_struct(tree node)
++{
++ tree field;
++
++ for (field = TYPE_FIELDS(node); field; field = TREE_CHAIN(field)) {
++ enum tree_code code = TREE_CODE(TREE_TYPE(field));
++ if (code == RECORD_TYPE) {
++ if (!(walk_struct(TREE_TYPE(field))))
++ return false;
++ } else if (is_fptr(field) == false && !TREE_READONLY(field))
++ return false;
++ }
++ return true;
++}
++
++static void finish_type(void *event_data, void *data)
++{
++ tree node = (tree)event_data;
++
++ if (node == NULL_TREE)
++ return;
++
++ if (lookup_attribute("no_const", TYPE_ATTRIBUTES(node)))
++ return;
++
++ if (TREE_READONLY(node))
++ return;
++
++ if (TYPE_FIELDS(node) == NULL_TREE)
++ return;
++
++ if (walk_struct(node))
++ constify_node(node);
++}
++
++int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
++{
++ const char * const plugin_name = plugin_info->base_name;
++ const int argc = plugin_info->argc;
++ const struct plugin_argument * const argv = plugin_info->argv;
++ int i;
++ bool constify = true;
++
++ if (!plugin_default_version_check(version, &gcc_version)) {
++ error(G_("incompatible gcc/plugin versions"));
++ return 1;
++ }
++
++ for (i = 0; i < argc; ++i) {
++ if (!(strcmp(argv[i].key, "no-constify"))) {
++ constify = false;
++ continue;
++ }
++ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
++ }
++
++ register_callback(plugin_name, PLUGIN_INFO, NULL, &const_plugin_info);
++ if (constify)
++ register_callback(plugin_name, PLUGIN_FINISH_TYPE, finish_type, NULL);
++ register_callback(plugin_name, PLUGIN_ATTRIBUTES, register_attributes, NULL);
++
++ return 0;
++}
+Binary files linux-2.6.32.43/tools/gcc/constify_plugin.so and linux-2.6.32.43/tools/gcc/constify_plugin.so differ
diff -urNp linux-2.6.32.43/tools/gcc/Makefile linux-2.6.32.43/tools/gcc/Makefile
--- linux-2.6.32.43/tools/gcc/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ linux-2.6.32.43/tools/gcc/Makefile 2011-06-04 20:52:13.000000000 -0400
-@@ -0,0 +1,11 @@
++++ linux-2.6.32.43/tools/gcc/Makefile 2011-08-05 20:33:55.000000000 -0400
+@@ -0,0 +1,12 @@
+#CC := gcc
+#PLUGIN_SOURCE_FILES := pax_plugin.c
+#PLUGIN_OBJECT_FILES := $(patsubst %.c,%.o,$(PLUGIN_SOURCE_FILES))
@@ -72724,12 +76933,14 @@ diff -urNp linux-2.6.32.43/tools/gcc/Makefile linux-2.6.32.43/tools/gcc/Makefile
+
+HOST_EXTRACFLAGS += -I$(GCCPLUGINS_DIR)/include
+
-+hostlibs-y := pax_plugin.so
++hostlibs-y := stackleak_plugin.so constify_plugin.so
+always := $(hostlibs-y)
-+pax_plugin-objs := pax_plugin.o
-diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_plugin.c
---- linux-2.6.32.43/tools/gcc/pax_plugin.c 1969-12-31 19:00:00.000000000 -0500
-+++ linux-2.6.32.43/tools/gcc/pax_plugin.c 2011-07-06 19:53:33.000000000 -0400
++stackleak_plugin-objs := stackleak_plugin.o
++constify_plugin-objs := constify_plugin.o
+Binary files linux-2.6.32.43/tools/gcc/pax_plugin.so and linux-2.6.32.43/tools/gcc/pax_plugin.so differ
+diff -urNp linux-2.6.32.43/tools/gcc/stackleak_plugin.c linux-2.6.32.43/tools/gcc/stackleak_plugin.c
+--- linux-2.6.32.43/tools/gcc/stackleak_plugin.c 1969-12-31 19:00:00.000000000 -0500
++++ linux-2.6.32.43/tools/gcc/stackleak_plugin.c 2011-08-05 20:33:55.000000000 -0400
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2011 by the PaX Team <pageexec@freemail.hu>
@@ -72774,22 +76985,22 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+static const char track_function[] = "pax_track_stack";
+static bool init_locals;
+
-+static struct plugin_info pax_plugin_info = {
++static struct plugin_info stackleak_plugin_info = {
+ .version = "201106030000",
+ .help = "track-lowest-sp=nn\ttrack sp in functions whose frame size is at least nn bytes\n"
+// "initialize-locals\t\tforcibly initialize all stack frames\n"
+};
+
-+static bool gate_pax_track_stack(void);
-+static unsigned int execute_pax_tree_instrument(void);
-+static unsigned int execute_pax_final(void);
++static bool gate_stackleak_track_stack(void);
++static unsigned int execute_stackleak_tree_instrument(void);
++static unsigned int execute_stackleak_final(void);
+
-+static struct gimple_opt_pass pax_tree_instrument_pass = {
++static struct gimple_opt_pass stackleak_tree_instrument_pass = {
+ .pass = {
+ .type = GIMPLE_PASS,
-+ .name = "pax_tree_instrument",
-+ .gate = gate_pax_track_stack,
-+ .execute = execute_pax_tree_instrument,
++ .name = "stackleak_tree_instrument",
++ .gate = gate_stackleak_track_stack,
++ .execute = execute_stackleak_tree_instrument,
+ .sub = NULL,
+ .next = NULL,
+ .static_pass_number = 0,
@@ -72802,12 +77013,12 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ }
+};
+
-+static struct rtl_opt_pass pax_final_rtl_opt_pass = {
++static struct rtl_opt_pass stackleak_final_rtl_opt_pass = {
+ .pass = {
+ .type = RTL_PASS,
-+ .name = "pax_final",
-+ .gate = gate_pax_track_stack,
-+ .execute = execute_pax_final,
++ .name = "stackleak_final",
++ .gate = gate_stackleak_track_stack,
++ .execute = execute_stackleak_final,
+ .sub = NULL,
+ .next = NULL,
+ .static_pass_number = 0,
@@ -72820,12 +77031,12 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ }
+};
+
-+static bool gate_pax_track_stack(void)
++static bool gate_stackleak_track_stack(void)
+{
+ return track_frame_size >= 0;
+}
+
-+static void pax_add_instrumentation(gimple_stmt_iterator *gsi, bool before)
++static void stackleak_add_instrumentation(gimple_stmt_iterator *gsi, bool before)
+{
+ gimple call;
+ tree decl, type;
@@ -72841,7 +77052,7 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ gsi_insert_after(gsi, call, GSI_CONTINUE_LINKING);
+}
+
-+static unsigned int execute_pax_tree_instrument(void)
++static unsigned int execute_stackleak_tree_instrument(void)
+{
+ basic_block bb;
+ gimple_stmt_iterator gsi;
@@ -72868,7 +77079,7 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ continue;
+
+ // 2. insert track call after each __builtin_alloca call
-+ pax_add_instrumentation(&gsi, false);
++ stackleak_add_instrumentation(&gsi, false);
+// print_node(stderr, "pax", decl, 4);
+ }
+ }
@@ -72876,12 +77087,12 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ // 3. insert track call at the beginning
+ bb = ENTRY_BLOCK_PTR_FOR_FUNCTION(cfun)->next_bb;
+ gsi = gsi_start_bb(bb);
-+ pax_add_instrumentation(&gsi, true);
++ stackleak_add_instrumentation(&gsi, true);
+
+ return 0;
+}
+
-+static unsigned int execute_pax_final(void)
++static unsigned int execute_stackleak_final(void)
+{
+ rtx insn;
+
@@ -72926,15 +77137,15 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ const int argc = plugin_info->argc;
+ const struct plugin_argument * const argv = plugin_info->argv;
+ int i;
-+ struct register_pass_info pax_tree_instrument_pass_info = {
-+ .pass = &pax_tree_instrument_pass.pass,
++ struct register_pass_info stackleak_tree_instrument_pass_info = {
++ .pass = &stackleak_tree_instrument_pass.pass,
+// .reference_pass_name = "tree_profile",
+ .reference_pass_name = "optimized",
+ .ref_pass_instance_number = 0,
+ .pos_op = PASS_POS_INSERT_AFTER
+ };
-+ struct register_pass_info pax_final_pass_info = {
-+ .pass = &pax_final_rtl_opt_pass.pass,
++ struct register_pass_info stackleak_final_pass_info = {
++ .pass = &stackleak_final_rtl_opt_pass.pass,
+ .reference_pass_name = "final",
+ .ref_pass_instance_number = 0,
+ .pos_op = PASS_POS_INSERT_BEFORE
@@ -72945,7 +77156,7 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ return 1;
+ }
+
-+ register_callback(plugin_name, PLUGIN_INFO, NULL, &pax_plugin_info);
++ register_callback(plugin_name, PLUGIN_INFO, NULL, &stackleak_plugin_info);
+
+ for (i = 0; i < argc; ++i) {
+ if (!strcmp(argv[i].key, "track-lowest-sp")) {
@@ -72969,12 +77180,12 @@ diff -urNp linux-2.6.32.43/tools/gcc/pax_plugin.c linux-2.6.32.43/tools/gcc/pax_
+ error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
+ }
+
-+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &pax_tree_instrument_pass_info);
-+ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &pax_final_pass_info);
++ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_tree_instrument_pass_info);
++ register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &stackleak_final_pass_info);
+
+ return 0;
+}
-Binary files linux-2.6.32.43/tools/gcc/pax_plugin.so and linux-2.6.32.43/tools/gcc/pax_plugin.so differ
+Binary files linux-2.6.32.43/tools/gcc/stackleak_plugin.so and linux-2.6.32.43/tools/gcc/stackleak_plugin.so differ
diff -urNp linux-2.6.32.43/usr/gen_init_cpio.c linux-2.6.32.43/usr/gen_init_cpio.c
--- linux-2.6.32.43/usr/gen_init_cpio.c 2011-03-27 14:31:47.000000000 -0400
+++ linux-2.6.32.43/usr/gen_init_cpio.c 2011-04-17 15:56:46.000000000 -0400
@@ -73002,32 +77213,8 @@ diff -urNp linux-2.6.32.43/usr/gen_init_cpio.c linux-2.6.32.43/usr/gen_init_cpio
}
diff -urNp linux-2.6.32.43/virt/kvm/kvm_main.c linux-2.6.32.43/virt/kvm/kvm_main.c
--- linux-2.6.32.43/virt/kvm/kvm_main.c 2011-03-27 14:31:47.000000000 -0400
-+++ linux-2.6.32.43/virt/kvm/kvm_main.c 2011-04-23 21:41:37.000000000 -0400
-@@ -1748,6 +1748,7 @@ static int kvm_vcpu_release(struct inode
- return 0;
- }
-
-+/* cannot be const */
- static struct file_operations kvm_vcpu_fops = {
- .release = kvm_vcpu_release,
- .unlocked_ioctl = kvm_vcpu_ioctl,
-@@ -2344,6 +2345,7 @@ static int kvm_vm_mmap(struct file *file
- return 0;
- }
-
-+/* cannot be const */
- static struct file_operations kvm_vm_fops = {
- .release = kvm_vm_release,
- .unlocked_ioctl = kvm_vm_ioctl,
-@@ -2431,6 +2433,7 @@ out:
- return r;
- }
-
-+/* cannot be const */
- static struct file_operations kvm_chardev_ops = {
- .unlocked_ioctl = kvm_dev_ioctl,
- .compat_ioctl = kvm_dev_ioctl,
-@@ -2494,7 +2497,7 @@ asmlinkage void kvm_handle_fault_on_rebo
++++ linux-2.6.32.43/virt/kvm/kvm_main.c 2011-08-05 20:33:55.000000000 -0400
+@@ -2494,7 +2494,7 @@ asmlinkage void kvm_handle_fault_on_rebo
if (kvm_rebooting)
/* spin while reset goes on */
while (true)
@@ -73036,7 +77223,7 @@ diff -urNp linux-2.6.32.43/virt/kvm/kvm_main.c linux-2.6.32.43/virt/kvm/kvm_main
/* Fault while not rebooting. We want the trace. */
BUG();
}
-@@ -2714,7 +2717,7 @@ static void kvm_sched_out(struct preempt
+@@ -2714,7 +2714,7 @@ static void kvm_sched_out(struct preempt
kvm_arch_vcpu_put(vcpu);
}
@@ -73045,7 +77232,7 @@ diff -urNp linux-2.6.32.43/virt/kvm/kvm_main.c linux-2.6.32.43/virt/kvm/kvm_main
struct module *module)
{
int r;
-@@ -2767,7 +2770,7 @@ int kvm_init(void *opaque, unsigned int
+@@ -2767,15 +2767,17 @@ int kvm_init(void *opaque, unsigned int
/* A kmem cache lets us meet the alignment requirements of fx_save. */
kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size,
__alignof__(struct kvm_vcpu),
@@ -73054,3 +77241,16 @@ diff -urNp linux-2.6.32.43/virt/kvm/kvm_main.c linux-2.6.32.43/virt/kvm/kvm_main
if (!kvm_vcpu_cache) {
r = -ENOMEM;
goto out_free_5;
+ }
+
+- kvm_chardev_ops.owner = module;
+- kvm_vm_fops.owner = module;
+- kvm_vcpu_fops.owner = module;
++ pax_open_kernel();
++ *(void **)&kvm_chardev_ops.owner = module;
++ *(void **)&kvm_vm_fops.owner = module;
++ *(void **)&kvm_vcpu_fops.owner = module;
++ pax_close_kernel();
+
+ r = misc_register(&kvm_dev);
+ if (r) {
diff --git a/2.6.32/4425_grsec-pax-without-grsec.patch b/2.6.32/4425_grsec-pax-without-grsec.patch
index 6e15250..48357e9 100644
--- a/2.6.32/4425_grsec-pax-without-grsec.patch
+++ b/2.6.32/4425_grsec-pax-without-grsec.patch
@@ -63,7 +63,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/fs/exec.c linux-2.6.32-hardened-r44/fs
print_symbol(KERN_ERR "PAX: refcount overflow occured at: %s\n", instruction_pointer(regs));
@@ -1871,10 +1875,12 @@
- void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
+ NORET_TYPE void pax_report_usercopy(const void *ptr, unsigned long len, bool to, const char *type)
{
+#ifdef CONFIG_GRKERNSEC
if (current->signal->curr_ip)
diff --git a/2.6.32/4430_grsec-kconfig-default-gids.patch b/2.6.32/4430_grsec-kconfig-default-gids.patch
index 8d4ec95..498bea8 100644
--- a/2.6.32/4430_grsec-kconfig-default-gids.patch
+++ b/2.6.32/4430_grsec-kconfig-default-gids.patch
@@ -12,7 +12,7 @@ from shooting themselves in the foot.
diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-hardened-r44/grsecurity/Kconfig
--- linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig 2011-04-17 18:15:55.000000000 -0400
+++ linux-2.6.32-hardened-r44/grsecurity/Kconfig 2011-04-17 18:37:33.000000000 -0400
-@@ -434,7 +434,7 @@
+@@ -436,7 +436,7 @@
config GRKERNSEC_PROC_GID
int "GID for special group"
depends on GRKERNSEC_PROC_USERGROUP
@@ -21,7 +21,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
config GRKERNSEC_PROC_ADD
bool "Additional restrictions"
-@@ -658,7 +658,7 @@
+@@ -660,7 +660,7 @@
config GRKERNSEC_AUDIT_GID
int "GID for auditing"
depends on GRKERNSEC_AUDIT_GROUP
@@ -30,7 +30,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
config GRKERNSEC_EXECLOG
bool "Exec logging"
-@@ -844,7 +844,7 @@
+@@ -846,7 +846,7 @@
config GRKERNSEC_TPE_GID
int "GID for untrusted users"
depends on GRKERNSEC_TPE && !GRKERNSEC_TPE_INVERT
@@ -39,7 +39,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
help
Setting this GID determines what group TPE restrictions will be
*enabled* for. If the sysctl option is enabled, a sysctl option
-@@ -853,7 +853,7 @@
+@@ -855,7 +855,7 @@
config GRKERNSEC_TPE_GID
int "GID for trusted users"
depends on GRKERNSEC_TPE && GRKERNSEC_TPE_INVERT
@@ -48,7 +48,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
help
Setting this GID determines what group TPE restrictions will be
*disabled* for. If the sysctl option is enabled, a sysctl option
-@@ -924,7 +924,7 @@
+@@ -926,7 +926,7 @@
config GRKERNSEC_SOCKET_ALL_GID
int "GID to deny all sockets for"
depends on GRKERNSEC_SOCKET_ALL
@@ -57,7 +57,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
help
Here you can choose the GID to disable socket access for. Remember to
add the users you want socket access disabled for to the GID
-@@ -945,7 +945,7 @@
+@@ -947,7 +947,7 @@
config GRKERNSEC_SOCKET_CLIENT_GID
int "GID to deny client sockets for"
depends on GRKERNSEC_SOCKET_CLIENT
@@ -66,7 +66,7 @@ diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-harden
help
Here you can choose the GID to disable client socket access for.
Remember to add the users you want client socket access disabled for to
-@@ -963,7 +963,7 @@
+@@ -965,7 +965,7 @@
config GRKERNSEC_SOCKET_SERVER_GID
int "GID to deny server sockets for"
depends on GRKERNSEC_SOCKET_SERVER
diff --git a/2.6.32/4437-grsec-kconfig-proc-user.patch b/2.6.32/4437-grsec-kconfig-proc-user.patch
index de044fb..58187fc 100644
--- a/2.6.32/4437-grsec-kconfig-proc-user.patch
+++ b/2.6.32/4437-grsec-kconfig-proc-user.patch
@@ -6,7 +6,7 @@ in a different way to avoid bug #366019. This patch should eventually go upstre
diff -Naur linux-2.6.32-hardened-r54.orig//grsecurity/Kconfig linux-2.6.32-hardened-r54/grsecurity/Kconfig
--- a/grsecurity/Kconfig 2011-06-29 07:46:02.000000000 -0400
+++ b/grsecurity/Kconfig 2011-06-29 07:47:20.000000000 -0400
-@@ -670,7 +670,7 @@
+@@ -672,7 +672,7 @@
config GRKERNSEC_PROC_USER
bool "Restrict /proc to user only"
@@ -15,7 +15,7 @@ diff -Naur linux-2.6.32-hardened-r54.orig//grsecurity/Kconfig linux-2.6.32-harde
help
If you say Y here, non-root users will only be able to view their own
processes, and restricts them from viewing network-related information,
-@@ -678,7 +678,7 @@
+@@ -680,7 +680,7 @@
config GRKERNSEC_PROC_USERGROUP
bool "Allow special group"
diff --git a/2.6.32/4440_selinux-avc_audit-log-curr_ip.patch b/2.6.32/4440_selinux-avc_audit-log-curr_ip.patch
index 926a630..ebb44f7 100644
--- a/2.6.32/4440_selinux-avc_audit-log-curr_ip.patch
+++ b/2.6.32/4440_selinux-avc_audit-log-curr_ip.patch
@@ -28,7 +28,7 @@ Signed-off-by: Lorenzo Hernandez Garcia-Hierro <lorenzo@gnu.org>
diff -Naur linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig linux-2.6.32-hardened-r44/grsecurity/Kconfig
--- linux-2.6.32-hardened-r44.orig/grsecurity/Kconfig 2011-04-17 18:47:02.000000000 -0400
+++ linux-2.6.32-hardened-r44/grsecurity/Kconfig 2011-04-17 18:51:15.000000000 -0400
-@@ -1275,6 +1275,27 @@
+@@ -1277,6 +1277,27 @@
menu "Logging Options"
depends on GRKERNSEC
diff --git a/2.6.32/4450_check_ssp_fix.patch b/2.6.32/4450_check_ssp_fix.patch
index b22bc77..40e0467 100644
--- a/2.6.32/4450_check_ssp_fix.patch
+++ b/2.6.32/4450_check_ssp_fix.patch
@@ -6,7 +6,7 @@
--- a/arch/x86/Makefile 2010-03-31 16:39:32.000000000 +0200
+++ b/arch/x86/Makefile 2010-03-31 16:36:53.000000000 +0200
-@@ -74,7 +74,7 @@
+@@ -75,7 +75,7 @@
ifdef CONFIG_CC_STACKPROTECTOR
cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
diff --git a/2.6.39/0000_README b/2.6.39/0000_README
index 66fcae4..c7b2f4b 100644
--- a/2.6.39/0000_README
+++ b/2.6.39/0000_README
@@ -3,7 +3,7 @@ README
Individual Patch Descriptions:
-----------------------------------------------------------------------------
-Patch: 4420_grsecurity-2.2.2-2.6.39.3-201107191826.patch
+Patch: 4420_grsecurity-2.2.2-2.6.39.4-201108052113.patch
From: http://www.grsecurity.net
Desc: hardened-sources base patch from upstream grsecurity
diff --git a/2.6.39/4420_grsecurity-2.2.2-2.6.39.3-201107191826.patch b/2.6.39/4420_grsecurity-2.2.2-2.6.39.4-201108052113.patch
index f85e905..6d7cdae 100644
--- a/2.6.39/4420_grsecurity-2.2.2-2.6.39.3-201107191826.patch
+++ b/2.6.39/4420_grsecurity-2.2.2-2.6.39.4-201108052113.patch
@@ -1,21 +1,6 @@
-diff -urNp linux-2.6.39.3/arch/alpha/include/asm/dma-mapping.h linux-2.6.39.3/arch/alpha/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/alpha/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -3,9 +3,9 @@
-
- #include <linux/dma-attrs.h>
-
--extern struct dma_map_ops *dma_ops;
-+extern const struct dma_map_ops *dma_ops;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- return dma_ops;
- }
-diff -urNp linux-2.6.39.3/arch/alpha/include/asm/elf.h linux-2.6.39.3/arch/alpha/include/asm/elf.h
---- linux-2.6.39.3/arch/alpha/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/alpha/include/asm/elf.h linux-2.6.39.4/arch/alpha/include/asm/elf.h
+--- linux-2.6.39.4/arch/alpha/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/alpha/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -90,6 +90,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
@@ -30,9 +15,9 @@ diff -urNp linux-2.6.39.3/arch/alpha/include/asm/elf.h linux-2.6.39.3/arch/alpha
/* $0 is set by ld.so to a pointer to a function which might be
registered using atexit. This provides a mean for the dynamic
linker to call DT_FINI functions for shared libraries that have
-diff -urNp linux-2.6.39.3/arch/alpha/include/asm/pgtable.h linux-2.6.39.3/arch/alpha/include/asm/pgtable.h
---- linux-2.6.39.3/arch/alpha/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/include/asm/pgtable.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/alpha/include/asm/pgtable.h linux-2.6.39.4/arch/alpha/include/asm/pgtable.h
+--- linux-2.6.39.4/arch/alpha/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/alpha/include/asm/pgtable.h 2011-08-05 19:44:33.000000000 -0400
@@ -101,6 +101,17 @@ struct vm_area_struct;
#define PAGE_SHARED __pgprot(_PAGE_VALID | __ACCESS_BITS)
#define PAGE_COPY __pgprot(_PAGE_VALID | __ACCESS_BITS | _PAGE_FOW)
@@ -51,141 +36,9 @@ diff -urNp linux-2.6.39.3/arch/alpha/include/asm/pgtable.h linux-2.6.39.3/arch/a
#define PAGE_KERNEL __pgprot(_PAGE_VALID | _PAGE_ASM | _PAGE_KRE | _PAGE_KWE)
#define _PAGE_NORMAL(x) __pgprot(_PAGE_VALID | __ACCESS_BITS | (x))
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_apecs.c linux-2.6.39.3/arch/alpha/kernel/core_apecs.c
---- linux-2.6.39.3/arch/alpha/kernel/core_apecs.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_apecs.c 2011-05-22 19:36:30.000000000 -0400
-@@ -305,7 +305,7 @@ apecs_write_config(struct pci_bus *bus,
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops apecs_pci_ops =
-+const struct pci_ops apecs_pci_ops =
- {
- .read = apecs_read_config,
- .write = apecs_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_cia.c linux-2.6.39.3/arch/alpha/kernel/core_cia.c
---- linux-2.6.39.3/arch/alpha/kernel/core_cia.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_cia.c 2011-05-22 19:36:30.000000000 -0400
-@@ -239,7 +239,7 @@ cia_write_config(struct pci_bus *bus, un
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops cia_pci_ops =
-+const struct pci_ops cia_pci_ops =
- {
- .read = cia_read_config,
- .write = cia_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_irongate.c linux-2.6.39.3/arch/alpha/kernel/core_irongate.c
---- linux-2.6.39.3/arch/alpha/kernel/core_irongate.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_irongate.c 2011-05-22 19:36:30.000000000 -0400
-@@ -155,7 +155,7 @@ irongate_write_config(struct pci_bus *bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops irongate_pci_ops =
-+const struct pci_ops irongate_pci_ops =
- {
- .read = irongate_read_config,
- .write = irongate_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_lca.c linux-2.6.39.3/arch/alpha/kernel/core_lca.c
---- linux-2.6.39.3/arch/alpha/kernel/core_lca.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_lca.c 2011-05-22 19:36:30.000000000 -0400
-@@ -231,7 +231,7 @@ lca_write_config(struct pci_bus *bus, un
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops lca_pci_ops =
-+const struct pci_ops lca_pci_ops =
- {
- .read = lca_read_config,
- .write = lca_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_marvel.c linux-2.6.39.3/arch/alpha/kernel/core_marvel.c
---- linux-2.6.39.3/arch/alpha/kernel/core_marvel.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_marvel.c 2011-05-22 19:36:30.000000000 -0400
-@@ -588,7 +588,7 @@ marvel_write_config(struct pci_bus *bus,
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops marvel_pci_ops =
-+const struct pci_ops marvel_pci_ops =
- {
- .read = marvel_read_config,
- .write = marvel_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_mcpcia.c linux-2.6.39.3/arch/alpha/kernel/core_mcpcia.c
---- linux-2.6.39.3/arch/alpha/kernel/core_mcpcia.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_mcpcia.c 2011-05-22 19:36:30.000000000 -0400
-@@ -235,7 +235,7 @@ mcpcia_write_config(struct pci_bus *bus,
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops mcpcia_pci_ops =
-+const struct pci_ops mcpcia_pci_ops =
- {
- .read = mcpcia_read_config,
- .write = mcpcia_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_polaris.c linux-2.6.39.3/arch/alpha/kernel/core_polaris.c
---- linux-2.6.39.3/arch/alpha/kernel/core_polaris.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_polaris.c 2011-05-22 19:36:30.000000000 -0400
-@@ -136,7 +136,7 @@ polaris_write_config(struct pci_bus *bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops polaris_pci_ops =
-+const struct pci_ops polaris_pci_ops =
- {
- .read = polaris_read_config,
- .write = polaris_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_t2.c linux-2.6.39.3/arch/alpha/kernel/core_t2.c
---- linux-2.6.39.3/arch/alpha/kernel/core_t2.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_t2.c 2011-05-22 19:36:30.000000000 -0400
-@@ -314,7 +314,7 @@ t2_write_config(struct pci_bus *bus, uns
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops t2_pci_ops =
-+const struct pci_ops t2_pci_ops =
- {
- .read = t2_read_config,
- .write = t2_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_titan.c linux-2.6.39.3/arch/alpha/kernel/core_titan.c
---- linux-2.6.39.3/arch/alpha/kernel/core_titan.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_titan.c 2011-05-22 19:36:30.000000000 -0400
-@@ -191,7 +191,7 @@ titan_write_config(struct pci_bus *bus,
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops titan_pci_ops =
-+const struct pci_ops titan_pci_ops =
- {
- .read = titan_read_config,
- .write = titan_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_tsunami.c linux-2.6.39.3/arch/alpha/kernel/core_tsunami.c
---- linux-2.6.39.3/arch/alpha/kernel/core_tsunami.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_tsunami.c 2011-05-22 19:36:30.000000000 -0400
-@@ -166,7 +166,7 @@ tsunami_write_config(struct pci_bus *bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops tsunami_pci_ops =
-+const struct pci_ops tsunami_pci_ops =
- {
- .read = tsunami_read_config,
- .write = tsunami_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/core_wildfire.c linux-2.6.39.3/arch/alpha/kernel/core_wildfire.c
---- linux-2.6.39.3/arch/alpha/kernel/core_wildfire.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/core_wildfire.c 2011-05-22 19:36:30.000000000 -0400
-@@ -431,7 +431,7 @@ wildfire_write_config(struct pci_bus *bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops wildfire_pci_ops =
-+const struct pci_ops wildfire_pci_ops =
- {
- .read = wildfire_read_config,
- .write = wildfire_write_config,
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/module.c linux-2.6.39.3/arch/alpha/kernel/module.c
---- linux-2.6.39.3/arch/alpha/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/alpha/kernel/module.c linux-2.6.39.4/arch/alpha/kernel/module.c
+--- linux-2.6.39.4/arch/alpha/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/alpha/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -182,7 +182,7 @@ apply_relocate_add(Elf64_Shdr *sechdrs,
/* The small sections were sorted to the end of the segment.
@@ -195,62 +48,10 @@ diff -urNp linux-2.6.39.3/arch/alpha/kernel/module.c linux-2.6.39.3/arch/alpha/k
got = sechdrs[me->arch.gotsecindex].sh_addr;
for (i = 0; i < n; i++) {
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/osf_sys.c linux-2.6.39.3/arch/alpha/kernel/osf_sys.c
---- linux-2.6.39.3/arch/alpha/kernel/osf_sys.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/osf_sys.c 2011-06-13 17:19:07.000000000 -0400
-@@ -409,7 +409,7 @@ SYSCALL_DEFINE2(osf_getdomainname, char
- return -EFAULT;
-
- len = namelen;
-- if (namelen > 32)
-+ if (len > 32)
- len = 32;
-
- down_read(&uts_sem);
-@@ -594,7 +594,7 @@ SYSCALL_DEFINE3(osf_sysinfo, int, comman
- down_read(&uts_sem);
- res = sysinfo_table[offset];
- len = strlen(res)+1;
-- if (len > count)
-+ if ((unsigned long)len > (unsigned long)count)
- len = count;
- if (copy_to_user(buf, res, len))
- err = -EFAULT;
-@@ -649,7 +649,7 @@ SYSCALL_DEFINE5(osf_getsysinfo, unsigned
- return 1;
-
- case GSI_GET_HWRPB:
-- if (nbytes < sizeof(*hwrpb))
-+ if (nbytes > sizeof(*hwrpb))
- return -EINVAL;
- if (copy_to_user(buffer, hwrpb, nbytes) != 0)
- return -EFAULT;
-@@ -1008,6 +1008,7 @@ SYSCALL_DEFINE4(osf_wait4, pid_t, pid, i
- {
- struct rusage r;
- long ret, err;
-+ unsigned int status = 0;
- mm_segment_t old_fs;
-
- if (!ur)
-@@ -1016,13 +1017,15 @@ SYSCALL_DEFINE4(osf_wait4, pid_t, pid, i
- old_fs = get_fs();
-
- set_fs (KERNEL_DS);
-- ret = sys_wait4(pid, ustatus, options, (struct rusage __user *) &r);
-+ ret = sys_wait4(pid, (unsigned int __user *) &status, options,
-+ (struct rusage __user *) &r);
- set_fs (old_fs);
-
- if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur)))
- return -EFAULT;
-
- err = 0;
-+ err |= put_user(status, ustatus);
- err |= __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec);
- err |= __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec);
- err |= __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
-@@ -1142,7 +1145,7 @@ arch_get_unmapped_area_1(unsigned long a
+diff -urNp linux-2.6.39.4/arch/alpha/kernel/osf_sys.c linux-2.6.39.4/arch/alpha/kernel/osf_sys.c
+--- linux-2.6.39.4/arch/alpha/kernel/osf_sys.c 2011-08-05 21:11:51.000000000 -0400
++++ linux-2.6.39.4/arch/alpha/kernel/osf_sys.c 2011-08-05 19:44:33.000000000 -0400
+@@ -1145,7 +1145,7 @@ arch_get_unmapped_area_1(unsigned long a
/* At this point: (!vma || addr < vma->vm_end). */
if (limit - len < addr)
return -ENOMEM;
@@ -259,7 +60,7 @@ diff -urNp linux-2.6.39.3/arch/alpha/kernel/osf_sys.c linux-2.6.39.3/arch/alpha/
return addr;
addr = vma->vm_end;
vma = vma->vm_next;
-@@ -1178,6 +1181,10 @@ arch_get_unmapped_area(struct file *filp
+@@ -1181,6 +1181,10 @@ arch_get_unmapped_area(struct file *filp
merely specific addresses, but regions of memory -- perhaps
this feature should be incorporated into all ports? */
@@ -270,7 +71,7 @@ diff -urNp linux-2.6.39.3/arch/alpha/kernel/osf_sys.c linux-2.6.39.3/arch/alpha/
if (addr) {
addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
if (addr != (unsigned long) -ENOMEM)
-@@ -1185,8 +1192,8 @@ arch_get_unmapped_area(struct file *filp
+@@ -1188,8 +1192,8 @@ arch_get_unmapped_area(struct file *filp
}
/* Next, try allocating at TASK_UNMAPPED_BASE. */
@@ -281,143 +82,9 @@ diff -urNp linux-2.6.39.3/arch/alpha/kernel/osf_sys.c linux-2.6.39.3/arch/alpha/
if (addr != (unsigned long) -ENOMEM)
return addr;
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/pci_iommu.c linux-2.6.39.3/arch/alpha/kernel/pci_iommu.c
---- linux-2.6.39.3/arch/alpha/kernel/pci_iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/pci_iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -950,7 +950,7 @@ static int alpha_pci_set_mask(struct dev
- return 0;
- }
-
--struct dma_map_ops alpha_pci_ops = {
-+const struct dma_map_ops alpha_pci_ops = {
- .alloc_coherent = alpha_pci_alloc_coherent,
- .free_coherent = alpha_pci_free_coherent,
- .map_page = alpha_pci_map_page,
-@@ -962,5 +962,5 @@ struct dma_map_ops alpha_pci_ops = {
- .set_dma_mask = alpha_pci_set_mask,
- };
-
--struct dma_map_ops *dma_ops = &alpha_pci_ops;
-+const struct dma_map_ops *dma_ops = &alpha_pci_ops;
- EXPORT_SYMBOL(dma_ops);
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/pci-noop.c linux-2.6.39.3/arch/alpha/kernel/pci-noop.c
---- linux-2.6.39.3/arch/alpha/kernel/pci-noop.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/pci-noop.c 2011-05-22 19:36:30.000000000 -0400
-@@ -173,7 +173,7 @@ static int alpha_noop_set_mask(struct de
- return 0;
- }
-
--struct dma_map_ops alpha_noop_ops = {
-+const struct dma_map_ops alpha_noop_ops = {
- .alloc_coherent = alpha_noop_alloc_coherent,
- .free_coherent = alpha_noop_free_coherent,
- .map_page = alpha_noop_map_page,
-@@ -183,7 +183,7 @@ struct dma_map_ops alpha_noop_ops = {
- .set_dma_mask = alpha_noop_set_mask,
- };
-
--struct dma_map_ops *dma_ops = &alpha_noop_ops;
-+const struct dma_map_ops *dma_ops = &alpha_noop_ops;
- EXPORT_SYMBOL(dma_ops);
-
- void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
-diff -urNp linux-2.6.39.3/arch/alpha/kernel/proto.h linux-2.6.39.3/arch/alpha/kernel/proto.h
---- linux-2.6.39.3/arch/alpha/kernel/proto.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/kernel/proto.h 2011-05-22 19:36:30.000000000 -0400
-@@ -17,14 +17,14 @@ struct pci_dev;
- struct pci_controller;
-
- /* core_apecs.c */
--extern struct pci_ops apecs_pci_ops;
-+extern const struct pci_ops apecs_pci_ops;
- extern void apecs_init_arch(void);
- extern void apecs_pci_clr_err(void);
- extern void apecs_machine_check(unsigned long vector, unsigned long la_ptr);
- extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_cia.c */
--extern struct pci_ops cia_pci_ops;
-+extern const struct pci_ops cia_pci_ops;
- extern void cia_init_pci(void);
- extern void cia_init_arch(void);
- extern void pyxis_init_arch(void);
-@@ -33,19 +33,19 @@ extern void cia_machine_check(unsigned l
- extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_irongate.c */
--extern struct pci_ops irongate_pci_ops;
-+extern const struct pci_ops irongate_pci_ops;
- extern int irongate_pci_clr_err(void);
- extern void irongate_init_arch(void);
- #define irongate_pci_tbi ((void *)0)
-
- /* core_lca.c */
--extern struct pci_ops lca_pci_ops;
-+extern const struct pci_ops lca_pci_ops;
- extern void lca_init_arch(void);
- extern void lca_machine_check(unsigned long vector, unsigned long la_ptr);
- extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_marvel.c */
--extern struct pci_ops marvel_pci_ops;
-+extern const struct pci_ops marvel_pci_ops;
- extern void marvel_init_arch(void);
- extern void marvel_kill_arch(int);
- extern void marvel_machine_check(unsigned long, unsigned long);
-@@ -60,14 +60,14 @@ struct io7 *marvel_next_io7(struct io7 *
- void io7_clear_errors(struct io7 *io7);
-
- /* core_mcpcia.c */
--extern struct pci_ops mcpcia_pci_ops;
-+extern const struct pci_ops mcpcia_pci_ops;
- extern void mcpcia_init_arch(void);
- extern void mcpcia_init_hoses(void);
- extern void mcpcia_machine_check(unsigned long vector, unsigned long la_ptr);
- extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_polaris.c */
--extern struct pci_ops polaris_pci_ops;
-+extern const struct pci_ops polaris_pci_ops;
- extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
- extern int polaris_write_config_dword(struct pci_dev *, int, u32);
- extern void polaris_init_arch(void);
-@@ -75,14 +75,14 @@ extern void polaris_machine_check(unsign
- #define polaris_pci_tbi ((void *)0)
-
- /* core_t2.c */
--extern struct pci_ops t2_pci_ops;
-+extern const struct pci_ops t2_pci_ops;
- extern void t2_init_arch(void);
- extern void t2_kill_arch(int);
- extern void t2_machine_check(unsigned long vector, unsigned long la_ptr);
- extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_titan.c */
--extern struct pci_ops titan_pci_ops;
-+extern const struct pci_ops titan_pci_ops;
- extern void titan_init_arch(void);
- extern void titan_kill_arch(int);
- extern void titan_machine_check(unsigned long, unsigned long);
-@@ -90,14 +90,14 @@ extern void titan_pci_tbi(struct pci_con
- extern struct _alpha_agp_info *titan_agp_info(void);
-
- /* core_tsunami.c */
--extern struct pci_ops tsunami_pci_ops;
-+extern const struct pci_ops tsunami_pci_ops;
- extern void tsunami_init_arch(void);
- extern void tsunami_kill_arch(int);
- extern void tsunami_machine_check(unsigned long vector, unsigned long la_ptr);
- extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
-
- /* core_wildfire.c */
--extern struct pci_ops wildfire_pci_ops;
-+extern const struct pci_ops wildfire_pci_ops;
- extern void wildfire_init_arch(void);
- extern void wildfire_kill_arch(int);
- extern void wildfire_machine_check(unsigned long vector, unsigned long la_ptr);
-diff -urNp linux-2.6.39.3/arch/alpha/mm/fault.c linux-2.6.39.3/arch/alpha/mm/fault.c
---- linux-2.6.39.3/arch/alpha/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/alpha/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/alpha/mm/fault.c linux-2.6.39.4/arch/alpha/mm/fault.c
+--- linux-2.6.39.4/arch/alpha/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/alpha/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -54,6 +54,124 @@ __load_new_mm_context(struct mm_struct *
__reload_thread(pcb);
}
@@ -574,45 +241,9 @@ diff -urNp linux-2.6.39.3/arch/alpha/mm/fault.c linux-2.6.39.3/arch/alpha/mm/fau
} else if (!cause) {
/* Allow reads even for write-only mappings */
if (!(vma->vm_flags & (VM_READ | VM_WRITE)))
-diff -urNp linux-2.6.39.3/arch/arm/common/it8152.c linux-2.6.39.3/arch/arm/common/it8152.c
---- linux-2.6.39.3/arch/arm/common/it8152.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/common/it8152.c 2011-05-22 19:36:30.000000000 -0400
-@@ -221,7 +221,7 @@ static int it8152_pci_write_config(struc
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops it8152_ops = {
-+static const struct pci_ops it8152_ops = {
- .read = it8152_pci_read_config,
- .write = it8152_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/common/via82c505.c linux-2.6.39.3/arch/arm/common/via82c505.c
---- linux-2.6.39.3/arch/arm/common/via82c505.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/common/via82c505.c 2011-05-22 19:36:30.000000000 -0400
-@@ -52,7 +52,7 @@ via82c505_write_config(struct pci_bus *b
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops via82c505_ops = {
-+static const struct pci_ops via82c505_ops = {
- .read = via82c505_read_config,
- .write = via82c505_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/cacheflush.h linux-2.6.39.3/arch/arm/include/asm/cacheflush.h
---- linux-2.6.39.3/arch/arm/include/asm/cacheflush.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/cacheflush.h 2011-05-22 19:36:30.000000000 -0400
-@@ -115,7 +115,7 @@ struct cpu_cache_fns {
- */
- #ifdef MULTI_CACHE
-
--extern struct cpu_cache_fns cpu_cache;
-+extern const struct cpu_cache_fns cpu_cache;
-
- #define __cpuc_flush_icache_all cpu_cache.flush_icache_all
- #define __cpuc_flush_kern_all cpu_cache.flush_kern_all
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/elf.h linux-2.6.39.3/arch/arm/include/asm/elf.h
---- linux-2.6.39.3/arch/arm/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/include/asm/elf.h linux-2.6.39.4/arch/arm/include/asm/elf.h
+--- linux-2.6.39.4/arch/arm/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -115,7 +115,14 @@ int dump_task_regs(struct task_struct *t
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
@@ -640,9 +271,9 @@ diff -urNp linux-2.6.39.3/arch/arm/include/asm/elf.h linux-2.6.39.3/arch/arm/inc
extern int vectors_user_mapping(void);
#define arch_setup_additional_pages(bprm, uses_interp) vectors_user_mapping()
#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/kmap_types.h linux-2.6.39.3/arch/arm/include/asm/kmap_types.h
---- linux-2.6.39.3/arch/arm/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/kmap_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/include/asm/kmap_types.h linux-2.6.39.4/arch/arm/include/asm/kmap_types.h
+--- linux-2.6.39.4/arch/arm/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/include/asm/kmap_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -21,6 +21,7 @@ enum km_type {
KM_L1_CACHE,
KM_L2_CACHE,
@@ -651,33 +282,9 @@ diff -urNp linux-2.6.39.3/arch/arm/include/asm/kmap_types.h linux-2.6.39.3/arch/
KM_TYPE_NR
};
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/outercache.h linux-2.6.39.3/arch/arm/include/asm/outercache.h
---- linux-2.6.39.3/arch/arm/include/asm/outercache.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/outercache.h 2011-05-22 19:36:30.000000000 -0400
-@@ -38,7 +38,7 @@ struct outer_cache_fns {
-
- #ifdef CONFIG_OUTER_CACHE
-
--extern struct outer_cache_fns outer_cache;
-+extern const struct outer_cache_fns outer_cache;
-
- static inline void outer_inv_range(phys_addr_t start, phys_addr_t end)
- {
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/page.h linux-2.6.39.3/arch/arm/include/asm/page.h
---- linux-2.6.39.3/arch/arm/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/page.h 2011-05-22 19:36:30.000000000 -0400
-@@ -126,7 +126,7 @@ struct cpu_user_fns {
- };
-
- #ifdef MULTI_USER
--extern struct cpu_user_fns cpu_user;
-+extern const struct cpu_user_fns cpu_user;
-
- #define __cpu_clear_user_highpage cpu_user.cpu_clear_user_highpage
- #define __cpu_copy_user_highpage cpu_user.cpu_copy_user_highpage
-diff -urNp linux-2.6.39.3/arch/arm/include/asm/uaccess.h linux-2.6.39.3/arch/arm/include/asm/uaccess.h
---- linux-2.6.39.3/arch/arm/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/include/asm/uaccess.h 2011-06-29 21:04:12.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/include/asm/uaccess.h linux-2.6.39.4/arch/arm/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/arm/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -22,6 +22,8 @@
#define VERIFY_READ 0
#define VERIFY_WRITE 1
@@ -733,9 +340,9 @@ diff -urNp linux-2.6.39.3/arch/arm/include/asm/uaccess.h linux-2.6.39.3/arch/arm
if (access_ok(VERIFY_WRITE, to, n))
n = __copy_to_user(to, from, n);
return n;
-diff -urNp linux-2.6.39.3/arch/arm/kernel/armksyms.c linux-2.6.39.3/arch/arm/kernel/armksyms.c
---- linux-2.6.39.3/arch/arm/kernel/armksyms.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/kernel/armksyms.c 2011-07-06 19:52:45.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/kernel/armksyms.c linux-2.6.39.4/arch/arm/kernel/armksyms.c
+--- linux-2.6.39.4/arch/arm/kernel/armksyms.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/kernel/armksyms.c 2011-08-05 19:44:33.000000000 -0400
@@ -98,8 +98,8 @@ EXPORT_SYMBOL(__strncpy_from_user);
#ifdef CONFIG_MMU
EXPORT_SYMBOL(copy_page);
@@ -747,21 +354,9 @@ diff -urNp linux-2.6.39.3/arch/arm/kernel/armksyms.c linux-2.6.39.3/arch/arm/ker
EXPORT_SYMBOL(__clear_user);
EXPORT_SYMBOL(__get_user_1);
-diff -urNp linux-2.6.39.3/arch/arm/kernel/kgdb.c linux-2.6.39.3/arch/arm/kernel/kgdb.c
---- linux-2.6.39.3/arch/arm/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -246,7 +246,7 @@ void kgdb_arch_exit(void)
- * and we handle the normal undef case within the do_undefinstr
- * handler.
- */
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- #ifndef __ARMEB__
- .gdb_bpt_instr = {0xfe, 0xde, 0xff, 0xe7}
- #else /* ! __ARMEB__ */
-diff -urNp linux-2.6.39.3/arch/arm/kernel/process.c linux-2.6.39.3/arch/arm/kernel/process.c
---- linux-2.6.39.3/arch/arm/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/kernel/process.c linux-2.6.39.4/arch/arm/kernel/process.c
+--- linux-2.6.39.4/arch/arm/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -28,7 +28,6 @@
#include <linux/tick.h>
#include <linux/utsname.h>
@@ -783,9 +378,9 @@ diff -urNp linux-2.6.39.3/arch/arm/kernel/process.c linux-2.6.39.3/arch/arm/kern
#ifdef CONFIG_MMU
/*
* The vectors page is always readable from user space for the
-diff -urNp linux-2.6.39.3/arch/arm/kernel/traps.c linux-2.6.39.3/arch/arm/kernel/traps.c
---- linux-2.6.39.3/arch/arm/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/kernel/traps.c 2011-06-13 21:30:34.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/kernel/traps.c linux-2.6.39.4/arch/arm/kernel/traps.c
+--- linux-2.6.39.4/arch/arm/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/kernel/traps.c 2011-08-05 19:44:33.000000000 -0400
@@ -258,6 +258,8 @@ static int __die(const char *str, int er
static DEFINE_SPINLOCK(die_lock);
@@ -805,9 +400,9 @@ diff -urNp linux-2.6.39.3/arch/arm/kernel/traps.c linux-2.6.39.3/arch/arm/kernel
if (ret != NOTIFY_STOP)
do_exit(SIGSEGV);
}
-diff -urNp linux-2.6.39.3/arch/arm/lib/copy_from_user.S linux-2.6.39.3/arch/arm/lib/copy_from_user.S
---- linux-2.6.39.3/arch/arm/lib/copy_from_user.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/lib/copy_from_user.S 2011-06-29 20:58:18.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/lib/copy_from_user.S linux-2.6.39.4/arch/arm/lib/copy_from_user.S
+--- linux-2.6.39.4/arch/arm/lib/copy_from_user.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/lib/copy_from_user.S 2011-08-05 19:44:33.000000000 -0400
@@ -16,7 +16,7 @@
/*
* Prototype:
@@ -831,9 +426,9 @@ diff -urNp linux-2.6.39.3/arch/arm/lib/copy_from_user.S linux-2.6.39.3/arch/arm/
.pushsection .fixup,"ax"
.align 0
-diff -urNp linux-2.6.39.3/arch/arm/lib/copy_to_user.S linux-2.6.39.3/arch/arm/lib/copy_to_user.S
---- linux-2.6.39.3/arch/arm/lib/copy_to_user.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/lib/copy_to_user.S 2011-06-29 20:59:20.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/lib/copy_to_user.S linux-2.6.39.4/arch/arm/lib/copy_to_user.S
+--- linux-2.6.39.4/arch/arm/lib/copy_to_user.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/lib/copy_to_user.S 2011-08-05 19:44:33.000000000 -0400
@@ -16,7 +16,7 @@
/*
* Prototype:
@@ -857,9 +452,9 @@ diff -urNp linux-2.6.39.3/arch/arm/lib/copy_to_user.S linux-2.6.39.3/arch/arm/li
ENDPROC(__copy_to_user_std)
.pushsection .fixup,"ax"
-diff -urNp linux-2.6.39.3/arch/arm/lib/uaccess.S linux-2.6.39.3/arch/arm/lib/uaccess.S
---- linux-2.6.39.3/arch/arm/lib/uaccess.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/lib/uaccess.S 2011-06-29 20:59:01.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/lib/uaccess.S linux-2.6.39.4/arch/arm/lib/uaccess.S
+--- linux-2.6.39.4/arch/arm/lib/uaccess.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/lib/uaccess.S 2011-08-05 19:44:33.000000000 -0400
@@ -20,7 +20,7 @@
#define PAGE_SHIFT 12
@@ -913,9 +508,9 @@ diff -urNp linux-2.6.39.3/arch/arm/lib/uaccess.S linux-2.6.39.3/arch/arm/lib/uac
.pushsection .fixup,"ax"
.align 0
-diff -urNp linux-2.6.39.3/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.39.3/arch/arm/lib/uaccess_with_memcpy.c
---- linux-2.6.39.3/arch/arm/lib/uaccess_with_memcpy.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/lib/uaccess_with_memcpy.c 2011-06-29 20:59:55.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.39.4/arch/arm/lib/uaccess_with_memcpy.c
+--- linux-2.6.39.4/arch/arm/lib/uaccess_with_memcpy.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/lib/uaccess_with_memcpy.c 2011-08-05 19:44:33.000000000 -0400
@@ -103,7 +103,7 @@ out:
}
@@ -925,251 +520,9 @@ diff -urNp linux-2.6.39.3/arch/arm/lib/uaccess_with_memcpy.c linux-2.6.39.3/arch
{
/*
* This test is stubbed out of the main function above to keep
-diff -urNp linux-2.6.39.3/arch/arm/mach-cns3xxx/pcie.c linux-2.6.39.3/arch/arm/mach-cns3xxx/pcie.c
---- linux-2.6.39.3/arch/arm/mach-cns3xxx/pcie.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-cns3xxx/pcie.c 2011-05-22 19:36:30.000000000 -0400
-@@ -162,7 +162,7 @@ static int cns3xxx_pci_setup(int nr, str
- return 1;
- }
-
--static struct pci_ops cns3xxx_pcie_ops = {
-+static const struct pci_ops cns3xxx_pcie_ops = {
- .read = cns3xxx_pci_read_config,
- .write = cns3xxx_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-dove/pcie.c linux-2.6.39.3/arch/arm/mach-dove/pcie.c
---- linux-2.6.39.3/arch/arm/mach-dove/pcie.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-dove/pcie.c 2011-05-22 19:36:30.000000000 -0400
-@@ -155,7 +155,7 @@ static int pcie_wr_conf(struct pci_bus *
- return ret;
- }
-
--static struct pci_ops pcie_ops = {
-+static const struct pci_ops pcie_ops = {
- .read = pcie_rd_conf,
- .write = pcie_wr_conf,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-footbridge/dc21285.c linux-2.6.39.3/arch/arm/mach-footbridge/dc21285.c
---- linux-2.6.39.3/arch/arm/mach-footbridge/dc21285.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-footbridge/dc21285.c 2011-05-22 19:36:30.000000000 -0400
-@@ -129,7 +129,7 @@ dc21285_write_config(struct pci_bus *bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops dc21285_ops = {
-+static const struct pci_ops dc21285_ops = {
- .read = dc21285_read_config,
- .write = dc21285_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-integrator/pci_v3.c linux-2.6.39.3/arch/arm/mach-integrator/pci_v3.c
---- linux-2.6.39.3/arch/arm/mach-integrator/pci_v3.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-integrator/pci_v3.c 2011-05-22 19:36:30.000000000 -0400
-@@ -340,7 +340,7 @@ static int v3_write_config(struct pci_bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops pci_v3_ops = {
-+static const struct pci_ops pci_v3_ops = {
- .read = v3_read_config,
- .write = v3_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-iop13xx/pci.c linux-2.6.39.3/arch/arm/mach-iop13xx/pci.c
---- linux-2.6.39.3/arch/arm/mach-iop13xx/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-iop13xx/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -324,7 +324,7 @@ iop13xx_atux_write_config(struct pci_bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops iop13xx_atux_ops = {
-+static const struct pci_ops iop13xx_atux_ops = {
- .read = iop13xx_atux_read_config,
- .write = iop13xx_atux_write_config,
- };
-@@ -471,7 +471,7 @@ iop13xx_atue_write_config(struct pci_bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops iop13xx_atue_ops = {
-+static const struct pci_ops iop13xx_atue_ops = {
- .read = iop13xx_atue_read_config,
- .write = iop13xx_atue_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ixp2000/enp2611.c linux-2.6.39.3/arch/arm/mach-ixp2000/enp2611.c
---- linux-2.6.39.3/arch/arm/mach-ixp2000/enp2611.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ixp2000/enp2611.c 2011-05-22 19:36:30.000000000 -0400
-@@ -137,7 +137,7 @@ static int enp2611_pci_write_config(stru
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
--static struct pci_ops enp2611_pci_ops = {
-+static const struct pci_ops enp2611_pci_ops = {
- .read = enp2611_pci_read_config,
- .write = enp2611_pci_write_config
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ixp2000/pci.c linux-2.6.39.3/arch/arm/mach-ixp2000/pci.c
---- linux-2.6.39.3/arch/arm/mach-ixp2000/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ixp2000/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -125,7 +125,7 @@ int ixp2000_pci_write_config(struct pci_
- }
-
-
--static struct pci_ops ixp2000_pci_ops = {
-+static const struct pci_ops ixp2000_pci_ops = {
- .read = ixp2000_pci_read_config,
- .write = ixp2000_pci_write_config
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ixp23xx/pci.c linux-2.6.39.3/arch/arm/mach-ixp23xx/pci.c
---- linux-2.6.39.3/arch/arm/mach-ixp23xx/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ixp23xx/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -136,7 +136,7 @@ static int ixp23xx_pci_write_config(stru
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops ixp23xx_pci_ops = {
-+const struct pci_ops ixp23xx_pci_ops = {
- .read = ixp23xx_pci_read_config,
- .write = ixp23xx_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ixp4xx/common-pci.c linux-2.6.39.3/arch/arm/mach-ixp4xx/common-pci.c
---- linux-2.6.39.3/arch/arm/mach-ixp4xx/common-pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ixp4xx/common-pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -283,7 +283,7 @@ static int ixp4xx_pci_write_config(struc
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops ixp4xx_ops = {
-+const struct pci_ops ixp4xx_ops = {
- .read = ixp4xx_pci_read_config,
- .write = ixp4xx_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-kirkwood/pcie.c linux-2.6.39.3/arch/arm/mach-kirkwood/pcie.c
---- linux-2.6.39.3/arch/arm/mach-kirkwood/pcie.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-kirkwood/pcie.c 2011-05-22 19:36:30.000000000 -0400
-@@ -111,7 +111,7 @@ static int pcie_wr_conf(struct pci_bus *
- return ret;
- }
-
--static struct pci_ops pcie_ops = {
-+static const struct pci_ops pcie_ops = {
- .read = pcie_rd_conf,
- .write = pcie_wr_conf,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ks8695/pci.c linux-2.6.39.3/arch/arm/mach-ks8695/pci.c
---- linux-2.6.39.3/arch/arm/mach-ks8695/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ks8695/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -136,7 +136,7 @@ static void ks8695_local_writeconfig(int
- __raw_writel(value, KS8695_PCI_VA + KS8695_PBCD);
- }
-
--static struct pci_ops ks8695_pci_ops = {
-+static const struct pci_ops ks8695_pci_ops = {
- .read = ks8695_pci_readconfig,
- .write = ks8695_pci_writeconfig,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-mmp/clock.c linux-2.6.39.3/arch/arm/mach-mmp/clock.c
---- linux-2.6.39.3/arch/arm/mach-mmp/clock.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-mmp/clock.c 2011-05-22 19:36:30.000000000 -0400
-@@ -29,7 +29,7 @@ static void apbc_clk_disable(struct clk
- __raw_writel(0, clk->clk_rst);
- }
-
--struct clkops apbc_clk_ops = {
-+const struct clkops apbc_clk_ops = {
- .enable = apbc_clk_enable,
- .disable = apbc_clk_disable,
- };
-@@ -44,7 +44,7 @@ static void apmu_clk_disable(struct clk
- __raw_writel(0, clk->clk_rst);
- }
-
--struct clkops apmu_clk_ops = {
-+const struct clkops apmu_clk_ops = {
- .enable = apmu_clk_enable,
- .disable = apmu_clk_disable,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-msm/iommu.c linux-2.6.39.3/arch/arm/mach-msm/iommu.c
---- linux-2.6.39.3/arch/arm/mach-msm/iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-msm/iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -669,7 +669,7 @@ fail:
- return 0;
- }
-
--static struct iommu_ops msm_iommu_ops = {
-+static const struct iommu_ops msm_iommu_ops = {
- .domain_init = msm_iommu_domain_init,
- .domain_destroy = msm_iommu_domain_destroy,
- .attach_dev = msm_iommu_attach_dev,
-diff -urNp linux-2.6.39.3/arch/arm/mach-msm/last_radio_log.c linux-2.6.39.3/arch/arm/mach-msm/last_radio_log.c
---- linux-2.6.39.3/arch/arm/mach-msm/last_radio_log.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-msm/last_radio_log.c 2011-05-22 19:36:30.000000000 -0400
-@@ -48,6 +48,7 @@ static ssize_t last_radio_log_read(struc
- }
-
- static struct file_operations last_radio_log_fops = {
-+ /* cannot be const, see msm_init_last_radio_log */
- .read = last_radio_log_read,
- .llseek = default_llseek,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-mv78xx0/pcie.c linux-2.6.39.3/arch/arm/mach-mv78xx0/pcie.c
---- linux-2.6.39.3/arch/arm/mach-mv78xx0/pcie.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-mv78xx0/pcie.c 2011-05-22 19:36:30.000000000 -0400
-@@ -222,7 +222,7 @@ static int pcie_wr_conf(struct pci_bus *
- return ret;
- }
-
--static struct pci_ops pcie_ops = {
-+static const struct pci_ops pcie_ops = {
- .read = pcie_rd_conf,
- .write = pcie_wr_conf,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-orion5x/pci.c linux-2.6.39.3/arch/arm/mach-orion5x/pci.c
---- linux-2.6.39.3/arch/arm/mach-orion5x/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-orion5x/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -130,7 +130,7 @@ static int pcie_wr_conf(struct pci_bus *
- return ret;
- }
-
--static struct pci_ops pcie_ops = {
-+static const struct pci_ops pcie_ops = {
- .read = pcie_rd_conf,
- .write = pcie_wr_conf,
- };
-@@ -368,7 +368,7 @@ static int orion5x_pci_wr_conf(struct pc
- PCI_FUNC(devfn), where, size, val);
- }
-
--static struct pci_ops pci_ops = {
-+static const struct pci_ops pci_ops = {
- .read = orion5x_pci_rd_conf,
- .write = orion5x_pci_wr_conf,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-sa1100/pci-nanoengine.c linux-2.6.39.3/arch/arm/mach-sa1100/pci-nanoengine.c
---- linux-2.6.39.3/arch/arm/mach-sa1100/pci-nanoengine.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-sa1100/pci-nanoengine.c 2011-05-22 19:36:30.000000000 -0400
-@@ -117,7 +117,7 @@ static int nanoengine_write_config(struc
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops pci_nano_ops = {
-+static const struct pci_ops pci_nano_ops = {
- .read = nanoengine_read_config,
- .write = nanoengine_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-tegra/pcie.c linux-2.6.39.3/arch/arm/mach-tegra/pcie.c
---- linux-2.6.39.3/arch/arm/mach-tegra/pcie.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-tegra/pcie.c 2011-05-22 19:36:30.000000000 -0400
-@@ -336,7 +336,7 @@ static int tegra_pcie_write_conf(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops tegra_pcie_ops = {
-+static const struct pci_ops tegra_pcie_ops = {
- .read = tegra_pcie_read_conf,
- .write = tegra_pcie_write_conf,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mach-ux500/mbox-db5500.c linux-2.6.39.3/arch/arm/mach-ux500/mbox-db5500.c
---- linux-2.6.39.3/arch/arm/mach-ux500/mbox-db5500.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-ux500/mbox-db5500.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/mach-ux500/mbox-db5500.c linux-2.6.39.4/arch/arm/mach-ux500/mbox-db5500.c
+--- linux-2.6.39.4/arch/arm/mach-ux500/mbox-db5500.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/mach-ux500/mbox-db5500.c 2011-08-05 19:44:33.000000000 -0400
@@ -168,7 +168,7 @@ static ssize_t mbox_read_fifo(struct dev
return sprintf(buf, "0x%X\n", mbox_value);
}
@@ -1179,21 +532,9 @@ diff -urNp linux-2.6.39.3/arch/arm/mach-ux500/mbox-db5500.c linux-2.6.39.3/arch/
static int mbox_show(struct seq_file *s, void *data)
{
-diff -urNp linux-2.6.39.3/arch/arm/mach-versatile/pci.c linux-2.6.39.3/arch/arm/mach-versatile/pci.c
---- linux-2.6.39.3/arch/arm/mach-versatile/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mach-versatile/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -165,7 +165,7 @@ static int versatile_write_config(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops pci_versatile_ops = {
-+static const struct pci_ops pci_versatile_ops = {
- .read = versatile_read_config,
- .write = versatile_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/arm/mm/fault.c linux-2.6.39.3/arch/arm/mm/fault.c
---- linux-2.6.39.3/arch/arm/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/mm/fault.c linux-2.6.39.4/arch/arm/mm/fault.c
+--- linux-2.6.39.4/arch/arm/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -182,6 +182,13 @@ __do_user_fault(struct task_struct *tsk,
}
#endif
@@ -1242,9 +583,9 @@ diff -urNp linux-2.6.39.3/arch/arm/mm/fault.c linux-2.6.39.3/arch/arm/mm/fault.c
/*
* First Level Translation Fault Handler
*
-diff -urNp linux-2.6.39.3/arch/arm/mm/mmap.c linux-2.6.39.3/arch/arm/mm/mmap.c
---- linux-2.6.39.3/arch/arm/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/mm/mmap.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/arm/mm/mmap.c linux-2.6.39.4/arch/arm/mm/mmap.c
+--- linux-2.6.39.4/arch/arm/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/arm/mm/mmap.c 2011-08-05 19:44:33.000000000 -0400
@@ -65,6 +65,10 @@ arch_get_unmapped_area(struct file *filp
if (len > TASK_SIZE)
return -ENOMEM;
@@ -1294,21 +635,9 @@ diff -urNp linux-2.6.39.3/arch/arm/mm/mmap.c linux-2.6.39.3/arch/arm/mm/mmap.c
/*
* Remember the place where we stopped the search:
*/
-diff -urNp linux-2.6.39.3/arch/arm/plat-iop/pci.c linux-2.6.39.3/arch/arm/plat-iop/pci.c
---- linux-2.6.39.3/arch/arm/plat-iop/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/arm/plat-iop/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -161,7 +161,7 @@ iop3xx_write_config(struct pci_bus *bus,
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops iop3xx_ops = {
-+static const struct pci_ops iop3xx_ops = {
- .read = iop3xx_read_config,
- .write = iop3xx_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/avr32/include/asm/elf.h linux-2.6.39.3/arch/avr32/include/asm/elf.h
---- linux-2.6.39.3/arch/avr32/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/avr32/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/avr32/include/asm/elf.h linux-2.6.39.4/arch/avr32/include/asm/elf.h
+--- linux-2.6.39.4/arch/avr32/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/avr32/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -84,8 +84,14 @@ typedef struct user_fpu_struct elf_fpreg
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
@@ -1325,9 +654,9 @@ diff -urNp linux-2.6.39.3/arch/avr32/include/asm/elf.h linux-2.6.39.3/arch/avr32
/* This yields a mask that user programs can use to figure out what
instruction set this CPU supports. This could be done in user space,
-diff -urNp linux-2.6.39.3/arch/avr32/include/asm/kmap_types.h linux-2.6.39.3/arch/avr32/include/asm/kmap_types.h
---- linux-2.6.39.3/arch/avr32/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/avr32/include/asm/kmap_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/avr32/include/asm/kmap_types.h linux-2.6.39.4/arch/avr32/include/asm/kmap_types.h
+--- linux-2.6.39.4/arch/avr32/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/avr32/include/asm/kmap_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -22,7 +22,8 @@ D(10) KM_IRQ0,
D(11) KM_IRQ1,
D(12) KM_SOFTIRQ0,
@@ -1338,9 +667,9 @@ diff -urNp linux-2.6.39.3/arch/avr32/include/asm/kmap_types.h linux-2.6.39.3/arc
};
#undef D
-diff -urNp linux-2.6.39.3/arch/avr32/mm/fault.c linux-2.6.39.3/arch/avr32/mm/fault.c
---- linux-2.6.39.3/arch/avr32/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/avr32/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/avr32/mm/fault.c linux-2.6.39.4/arch/avr32/mm/fault.c
+--- linux-2.6.39.4/arch/avr32/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/avr32/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -41,6 +41,23 @@ static inline int notify_page_fault(stru
int exception_trace = 1;
@@ -1382,42 +711,9 @@ diff -urNp linux-2.6.39.3/arch/avr32/mm/fault.c linux-2.6.39.3/arch/avr32/mm/fau
if (exception_trace && printk_ratelimit())
printk("%s%s[%d]: segfault at %08lx pc %08lx "
"sp %08lx ecr %lu\n",
-diff -urNp linux-2.6.39.3/arch/blackfin/kernel/kgdb.c linux-2.6.39.3/arch/blackfin/kernel/kgdb.c
---- linux-2.6.39.3/arch/blackfin/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/blackfin/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -420,7 +420,7 @@ int kgdb_arch_handle_exception(int vecto
- return -1; /* this means that we do not want to exit from the handler */
- }
-
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- .gdb_bpt_instr = {0xa1},
- .flags = KGDB_HW_BREAKPOINT,
- .set_hw_breakpoint = bfin_set_hw_break,
-diff -urNp linux-2.6.39.3/arch/blackfin/mm/maccess.c linux-2.6.39.3/arch/blackfin/mm/maccess.c
---- linux-2.6.39.3/arch/blackfin/mm/maccess.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/blackfin/mm/maccess.c 2011-05-22 19:36:30.000000000 -0400
-@@ -16,7 +16,7 @@ static int validate_memory_access_addres
- return bfin_mem_access_type(addr, size);
- }
-
--long probe_kernel_read(void *dst, void *src, size_t size)
-+long probe_kernel_read(void *dst, const void *src, size_t size)
- {
- unsigned long lsrc = (unsigned long)src;
- int mem_type;
-@@ -55,7 +55,7 @@ long probe_kernel_read(void *dst, void *
- return -EFAULT;
- }
-
--long probe_kernel_write(void *dst, void *src, size_t size)
-+long probe_kernel_write(void *dst, const void *src, size_t size)
- {
- unsigned long ldst = (unsigned long)dst;
- int mem_type;
-diff -urNp linux-2.6.39.3/arch/frv/include/asm/kmap_types.h linux-2.6.39.3/arch/frv/include/asm/kmap_types.h
---- linux-2.6.39.3/arch/frv/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/frv/include/asm/kmap_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/frv/include/asm/kmap_types.h linux-2.6.39.4/arch/frv/include/asm/kmap_types.h
+--- linux-2.6.39.4/arch/frv/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/frv/include/asm/kmap_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -23,6 +23,7 @@ enum km_type {
KM_IRQ1,
KM_SOFTIRQ0,
@@ -1426,51 +722,9 @@ diff -urNp linux-2.6.39.3/arch/frv/include/asm/kmap_types.h linux-2.6.39.3/arch/
KM_TYPE_NR
};
-diff -urNp linux-2.6.39.3/arch/frv/mb93090-mb00/pci-frv.h linux-2.6.39.3/arch/frv/mb93090-mb00/pci-frv.h
---- linux-2.6.39.3/arch/frv/mb93090-mb00/pci-frv.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/frv/mb93090-mb00/pci-frv.h 2011-05-22 19:36:30.000000000 -0400
-@@ -34,7 +34,7 @@ void pcibios_resource_survey(void);
-
- extern int __nongpreldata pcibios_last_bus;
- extern struct pci_bus *__nongpreldata pci_root_bus;
--extern struct pci_ops *__nongpreldata pci_root_ops;
-+extern const struct pci_ops *__nongpreldata pci_root_ops;
-
- /* pci-irq.c */
- extern unsigned int pcibios_irq_mask;
-diff -urNp linux-2.6.39.3/arch/frv/mb93090-mb00/pci-vdk.c linux-2.6.39.3/arch/frv/mb93090-mb00/pci-vdk.c
---- linux-2.6.39.3/arch/frv/mb93090-mb00/pci-vdk.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/frv/mb93090-mb00/pci-vdk.c 2011-05-22 19:36:30.000000000 -0400
-@@ -27,7 +27,7 @@ unsigned int __nongpreldata pci_probe =
-
- int __nongpreldata pcibios_last_bus = -1;
- struct pci_bus *__nongpreldata pci_root_bus;
--struct pci_ops *__nongpreldata pci_root_ops;
-+const struct pci_ops *__nongpreldata pci_root_ops;
-
- /*
- * The accessible PCI window does not cover the entire CPU address space, but
-@@ -169,7 +169,7 @@ static int pci_frv_write_config(struct p
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops pci_direct_frv = {
-+static const struct pci_ops pci_direct_frv = {
- pci_frv_read_config,
- pci_frv_write_config,
- };
-@@ -356,7 +356,7 @@ void __init pcibios_fixup_bus(struct pci
-
- int __init pcibios_init(void)
- {
-- struct pci_ops *dir = NULL;
-+ const struct pci_ops *dir = NULL;
-
- if (!mb93090_mb00_detected)
- return -ENXIO;
-diff -urNp linux-2.6.39.3/arch/frv/mm/elf-fdpic.c linux-2.6.39.3/arch/frv/mm/elf-fdpic.c
---- linux-2.6.39.3/arch/frv/mm/elf-fdpic.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/frv/mm/elf-fdpic.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/frv/mm/elf-fdpic.c linux-2.6.39.4/arch/frv/mm/elf-fdpic.c
+--- linux-2.6.39.4/arch/frv/mm/elf-fdpic.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/frv/mm/elf-fdpic.c 2011-08-05 19:44:33.000000000 -0400
@@ -73,8 +73,7 @@ unsigned long arch_get_unmapped_area(str
if (addr) {
addr = PAGE_ALIGN(addr);
@@ -1499,97 +753,9 @@ diff -urNp linux-2.6.39.3/arch/frv/mm/elf-fdpic.c linux-2.6.39.3/arch/frv/mm/elf
goto success;
addr = vma->vm_end;
}
-diff -urNp linux-2.6.39.3/arch/ia64/hp/common/hwsw_iommu.c linux-2.6.39.3/arch/ia64/hp/common/hwsw_iommu.c
---- linux-2.6.39.3/arch/ia64/hp/common/hwsw_iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/hp/common/hwsw_iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -17,7 +17,7 @@
- #include <linux/swiotlb.h>
- #include <asm/machvec.h>
-
--extern struct dma_map_ops sba_dma_ops, swiotlb_dma_ops;
-+extern const struct dma_map_ops sba_dma_ops, swiotlb_dma_ops;
-
- /* swiotlb declarations & definitions: */
- extern int swiotlb_late_init_with_default_size (size_t size);
-@@ -33,7 +33,7 @@ static inline int use_swiotlb(struct dev
- !sba_dma_ops.dma_supported(dev, *dev->dma_mask);
- }
-
--struct dma_map_ops *hwsw_dma_get_ops(struct device *dev)
-+const struct dma_map_ops *hwsw_dma_get_ops(struct device *dev)
- {
- if (use_swiotlb(dev))
- return &swiotlb_dma_ops;
-diff -urNp linux-2.6.39.3/arch/ia64/hp/common/sba_iommu.c linux-2.6.39.3/arch/ia64/hp/common/sba_iommu.c
---- linux-2.6.39.3/arch/ia64/hp/common/sba_iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/hp/common/sba_iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -2097,7 +2097,7 @@ static struct acpi_driver acpi_sba_ioc_d
- },
- };
-
--extern struct dma_map_ops swiotlb_dma_ops;
-+extern const struct dma_map_ops swiotlb_dma_ops;
-
- static int __init
- sba_init(void)
-@@ -2211,7 +2211,7 @@ sba_page_override(char *str)
-
- __setup("sbapagesize=",sba_page_override);
-
--struct dma_map_ops sba_dma_ops = {
-+const struct dma_map_ops sba_dma_ops = {
- .alloc_coherent = sba_alloc_coherent,
- .free_coherent = sba_free_coherent,
- .map_page = sba_map_page,
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/dma-mapping.h linux-2.6.39.3/arch/ia64/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/ia64/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -14,7 +14,7 @@
-
- #define DMA_ERROR_CODE 0
-
--extern struct dma_map_ops *dma_ops;
-+extern const struct dma_map_ops *dma_ops;
- extern struct ia64_machine_vector ia64_mv;
- extern void set_iommu_machvec(void);
-
-@@ -26,7 +26,7 @@ extern void machvec_dma_sync_sg(struct d
- static inline void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *daddr, gfp_t gfp)
- {
-- struct dma_map_ops *ops = platform_dma_get_ops(dev);
-+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
- void *caddr;
-
- caddr = ops->alloc_coherent(dev, size, daddr, gfp);
-@@ -37,7 +37,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *caddr, dma_addr_t daddr)
- {
-- struct dma_map_ops *ops = platform_dma_get_ops(dev);
-+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
- debug_dma_free_coherent(dev, size, caddr, daddr);
- ops->free_coherent(dev, size, caddr, daddr);
- }
-@@ -51,13 +51,13 @@ static inline void dma_free_coherent(str
-
- static inline int dma_mapping_error(struct device *dev, dma_addr_t daddr)
- {
-- struct dma_map_ops *ops = platform_dma_get_ops(dev);
-+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
- return ops->mapping_error(dev, daddr);
- }
-
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = platform_dma_get_ops(dev);
-+ const struct dma_map_ops *ops = platform_dma_get_ops(dev);
- return ops->dma_supported(dev, mask);
- }
-
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/elf.h linux-2.6.39.3/arch/ia64/include/asm/elf.h
---- linux-2.6.39.3/arch/ia64/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/include/asm/elf.h linux-2.6.39.4/arch/ia64/include/asm/elf.h
+--- linux-2.6.39.4/arch/ia64/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -42,6 +42,13 @@
*/
#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x800000000UL)
@@ -1604,30 +770,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/include/asm/elf.h linux-2.6.39.3/arch/ia64/i
#define PT_IA_64_UNWIND 0x70000001
/* IA-64 relocations: */
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/machvec.h linux-2.6.39.3/arch/ia64/include/asm/machvec.h
---- linux-2.6.39.3/arch/ia64/include/asm/machvec.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/machvec.h 2011-05-22 19:36:30.000000000 -0400
-@@ -45,7 +45,7 @@ typedef void ia64_mv_kernel_launch_event
- /* DMA-mapping interface: */
- typedef void ia64_mv_dma_init (void);
- typedef u64 ia64_mv_dma_get_required_mask (struct device *);
--typedef struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
-+typedef const struct dma_map_ops *ia64_mv_dma_get_ops(struct device *);
-
- /*
- * WARNING: The legacy I/O space is _architected_. Platforms are
-@@ -251,7 +251,7 @@ extern void machvec_init_from_cmdline(co
- # endif /* CONFIG_IA64_GENERIC */
-
- extern void swiotlb_dma_init(void);
--extern struct dma_map_ops *dma_get_ops(struct device *);
-+extern const struct dma_map_ops *dma_get_ops(struct device *);
-
- /*
- * Define default versions so we can extend machvec for new platforms without having
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/pgtable.h linux-2.6.39.3/arch/ia64/include/asm/pgtable.h
---- linux-2.6.39.3/arch/ia64/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/pgtable.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/include/asm/pgtable.h linux-2.6.39.4/arch/ia64/include/asm/pgtable.h
+--- linux-2.6.39.4/arch/ia64/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/include/asm/pgtable.h 2011-08-05 19:44:33.000000000 -0400
@@ -12,7 +12,7 @@
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
@@ -1655,9 +800,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/include/asm/pgtable.h linux-2.6.39.3/arch/ia
#define PAGE_GATE __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_X_RX)
#define PAGE_KERNEL __pgprot(__DIRTY_BITS | _PAGE_PL_0 | _PAGE_AR_RWX)
#define PAGE_KERNELRX __pgprot(__ACCESS_BITS | _PAGE_PL_0 | _PAGE_AR_RX)
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/spinlock.h linux-2.6.39.3/arch/ia64/include/asm/spinlock.h
---- linux-2.6.39.3/arch/ia64/include/asm/spinlock.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/spinlock.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/include/asm/spinlock.h linux-2.6.39.4/arch/ia64/include/asm/spinlock.h
+--- linux-2.6.39.4/arch/ia64/include/asm/spinlock.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/include/asm/spinlock.h 2011-08-05 19:44:33.000000000 -0400
@@ -72,7 +72,7 @@ static __always_inline void __ticket_spi
unsigned short *p = (unsigned short *)&lock->lock + 1, tmp;
@@ -1667,9 +812,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/include/asm/spinlock.h linux-2.6.39.3/arch/i
}
static __always_inline void __ticket_spin_unlock_wait(arch_spinlock_t *lock)
-diff -urNp linux-2.6.39.3/arch/ia64/include/asm/uaccess.h linux-2.6.39.3/arch/ia64/include/asm/uaccess.h
---- linux-2.6.39.3/arch/ia64/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/include/asm/uaccess.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/include/asm/uaccess.h linux-2.6.39.4/arch/ia64/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/ia64/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -257,7 +257,7 @@ __copy_from_user (void *to, const void _
const void *__cu_from = (from); \
long __cu_len = (n); \
@@ -1688,30 +833,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/include/asm/uaccess.h linux-2.6.39.3/arch/ia
__cu_len = __copy_user((__force void __user *) __cu_to, __cu_from, __cu_len); \
__cu_len; \
})
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/dma-mapping.c linux-2.6.39.3/arch/ia64/kernel/dma-mapping.c
---- linux-2.6.39.3/arch/ia64/kernel/dma-mapping.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/dma-mapping.c 2011-05-22 19:36:30.000000000 -0400
-@@ -3,7 +3,7 @@
- /* Set this to 1 if there is a HW IOMMU in the system */
- int iommu_detected __read_mostly;
-
--struct dma_map_ops *dma_ops;
-+const struct dma_map_ops *dma_ops;
- EXPORT_SYMBOL(dma_ops);
-
- #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)
-@@ -16,7 +16,7 @@ static int __init dma_init(void)
- }
- fs_initcall(dma_init);
-
--struct dma_map_ops *dma_get_ops(struct device *dev)
-+const struct dma_map_ops *dma_get_ops(struct device *dev)
- {
- return dma_ops;
- }
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/module.c linux-2.6.39.3/arch/ia64/kernel/module.c
---- linux-2.6.39.3/arch/ia64/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/kernel/module.c linux-2.6.39.4/arch/ia64/kernel/module.c
+--- linux-2.6.39.4/arch/ia64/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -315,8 +315,7 @@ module_alloc (unsigned long size)
void
module_free (struct module *mod, void *module_region)
@@ -1800,33 +924,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/kernel/module.c linux-2.6.39.3/arch/ia64/ker
mod->arch.gp = gp;
DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
}
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/pci-dma.c linux-2.6.39.3/arch/ia64/kernel/pci-dma.c
---- linux-2.6.39.3/arch/ia64/kernel/pci-dma.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/pci-dma.c 2011-05-22 19:36:30.000000000 -0400
-@@ -43,7 +43,7 @@ struct device fallback_dev = {
- .dma_mask = &fallback_dev.coherent_dma_mask,
- };
-
--extern struct dma_map_ops intel_dma_ops;
-+extern const struct dma_map_ops intel_dma_ops;
-
- static int __init pci_iommu_init(void)
- {
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/pci-swiotlb.c linux-2.6.39.3/arch/ia64/kernel/pci-swiotlb.c
---- linux-2.6.39.3/arch/ia64/kernel/pci-swiotlb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/pci-swiotlb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -22,7 +22,7 @@ static void *ia64_swiotlb_alloc_coherent
- return swiotlb_alloc_coherent(dev, size, dma_handle, gfp);
- }
-
--struct dma_map_ops swiotlb_dma_ops = {
-+const struct dma_map_ops swiotlb_dma_ops = {
- .alloc_coherent = ia64_swiotlb_alloc_coherent,
- .free_coherent = swiotlb_free_coherent,
- .map_page = swiotlb_map_page,
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/sys_ia64.c linux-2.6.39.3/arch/ia64/kernel/sys_ia64.c
---- linux-2.6.39.3/arch/ia64/kernel/sys_ia64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/sys_ia64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/kernel/sys_ia64.c linux-2.6.39.4/arch/ia64/kernel/sys_ia64.c
+--- linux-2.6.39.4/arch/ia64/kernel/sys_ia64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/kernel/sys_ia64.c 2011-08-05 19:44:33.000000000 -0400
@@ -43,6 +43,13 @@ arch_get_unmapped_area (struct file *fil
if (REGION_NUMBER(addr) == RGN_HPAGE)
addr = 0;
@@ -1859,9 +959,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/kernel/sys_ia64.c linux-2.6.39.3/arch/ia64/k
/* Remember the address where we stopped this search: */
mm->free_area_cache = addr + len;
return addr;
-diff -urNp linux-2.6.39.3/arch/ia64/kernel/vmlinux.lds.S linux-2.6.39.3/arch/ia64/kernel/vmlinux.lds.S
---- linux-2.6.39.3/arch/ia64/kernel/vmlinux.lds.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/kernel/vmlinux.lds.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/kernel/vmlinux.lds.S linux-2.6.39.4/arch/ia64/kernel/vmlinux.lds.S
+--- linux-2.6.39.4/arch/ia64/kernel/vmlinux.lds.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/kernel/vmlinux.lds.S 2011-08-05 19:44:33.000000000 -0400
@@ -199,7 +199,7 @@ SECTIONS {
/* Per-cpu data: */
. = ALIGN(PERCPU_PAGE_SIZE);
@@ -1871,9 +971,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/kernel/vmlinux.lds.S linux-2.6.39.3/arch/ia6
/*
* ensure percpu data fits
* into percpu page size
-diff -urNp linux-2.6.39.3/arch/ia64/mm/fault.c linux-2.6.39.3/arch/ia64/mm/fault.c
---- linux-2.6.39.3/arch/ia64/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/mm/fault.c linux-2.6.39.4/arch/ia64/mm/fault.c
+--- linux-2.6.39.4/arch/ia64/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -72,6 +72,23 @@ mapped_kernel_page_is_present (unsigned
return pte_present(pte);
}
@@ -1923,9 +1023,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/mm/fault.c linux-2.6.39.3/arch/ia64/mm/fault
/*
* If for any reason at all we couldn't handle the fault, make
* sure we exit gracefully rather than endlessly redo the
-diff -urNp linux-2.6.39.3/arch/ia64/mm/hugetlbpage.c linux-2.6.39.3/arch/ia64/mm/hugetlbpage.c
---- linux-2.6.39.3/arch/ia64/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/mm/hugetlbpage.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/mm/hugetlbpage.c linux-2.6.39.4/arch/ia64/mm/hugetlbpage.c
+--- linux-2.6.39.4/arch/ia64/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/mm/hugetlbpage.c 2011-08-05 19:44:33.000000000 -0400
@@ -171,7 +171,7 @@ unsigned long hugetlb_get_unmapped_area(
/* At this point: (!vmm || addr < vmm->vm_end). */
if (REGION_OFFSET(addr) + len > RGN_MAP_LIMIT)
@@ -1935,9 +1035,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/mm/hugetlbpage.c linux-2.6.39.3/arch/ia64/mm
return addr;
addr = ALIGN(vmm->vm_end, HPAGE_SIZE);
}
-diff -urNp linux-2.6.39.3/arch/ia64/mm/init.c linux-2.6.39.3/arch/ia64/mm/init.c
---- linux-2.6.39.3/arch/ia64/mm/init.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/mm/init.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/ia64/mm/init.c linux-2.6.39.4/arch/ia64/mm/init.c
+--- linux-2.6.39.4/arch/ia64/mm/init.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/ia64/mm/init.c 2011-08-05 19:44:33.000000000 -0400
@@ -122,6 +122,19 @@ ia64_init_addr_space (void)
vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
vma->vm_end = vma->vm_start + PAGE_SIZE;
@@ -1958,33 +1058,9 @@ diff -urNp linux-2.6.39.3/arch/ia64/mm/init.c linux-2.6.39.3/arch/ia64/mm/init.c
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
down_write(&current->mm->mmap_sem);
if (insert_vm_struct(current->mm, vma)) {
-diff -urNp linux-2.6.39.3/arch/ia64/pci/pci.c linux-2.6.39.3/arch/ia64/pci/pci.c
---- linux-2.6.39.3/arch/ia64/pci/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/pci/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -109,7 +109,7 @@ static int pci_write(struct pci_bus *bus
- devfn, where, size, value);
- }
-
--struct pci_ops pci_root_ops = {
-+const struct pci_ops pci_root_ops = {
- .read = pci_read,
- .write = pci_write,
- };
-diff -urNp linux-2.6.39.3/arch/ia64/sn/pci/pci_dma.c linux-2.6.39.3/arch/ia64/sn/pci/pci_dma.c
---- linux-2.6.39.3/arch/ia64/sn/pci/pci_dma.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/ia64/sn/pci/pci_dma.c 2011-05-22 19:36:30.000000000 -0400
-@@ -465,7 +465,7 @@ int sn_pci_legacy_write(struct pci_bus *
- return ret;
- }
-
--static struct dma_map_ops sn_dma_ops = {
-+static const struct dma_map_ops sn_dma_ops = {
- .alloc_coherent = sn_dma_alloc_coherent,
- .free_coherent = sn_dma_free_coherent,
- .map_page = sn_dma_map_page,
-diff -urNp linux-2.6.39.3/arch/m32r/lib/usercopy.c linux-2.6.39.3/arch/m32r/lib/usercopy.c
---- linux-2.6.39.3/arch/m32r/lib/usercopy.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/m32r/lib/usercopy.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/m32r/lib/usercopy.c linux-2.6.39.4/arch/m32r/lib/usercopy.c
+--- linux-2.6.39.4/arch/m32r/lib/usercopy.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/m32r/lib/usercopy.c 2011-08-05 19:44:33.000000000 -0400
@@ -14,6 +14,9 @@
unsigned long
__generic_copy_to_user(void __user *to, const void *from, unsigned long n)
@@ -2005,281 +1081,9 @@ diff -urNp linux-2.6.39.3/arch/m32r/lib/usercopy.c linux-2.6.39.3/arch/m32r/lib/
prefetchw(to);
if (access_ok(VERIFY_READ, from, n))
__copy_user_zeroing(to,from,n);
-diff -urNp linux-2.6.39.3/arch/microblaze/include/asm/device.h linux-2.6.39.3/arch/microblaze/include/asm/device.h
---- linux-2.6.39.3/arch/microblaze/include/asm/device.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/include/asm/device.h 2011-05-22 19:36:30.000000000 -0400
-@@ -13,7 +13,7 @@ struct device_node;
-
- struct dev_archdata {
- /* DMA operations on that device */
-- struct dma_map_ops *dma_ops;
-+ const struct dma_map_ops *dma_ops;
- void *dma_data;
- };
-
-diff -urNp linux-2.6.39.3/arch/microblaze/include/asm/dma-mapping.h linux-2.6.39.3/arch/microblaze/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/microblaze/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -43,14 +43,14 @@ static inline unsigned long device_to_ma
- return 0xfffffffful;
- }
-
--extern struct dma_map_ops *dma_ops;
-+extern const struct dma_map_ops *dma_ops;
-
- /*
- * Available generic sets of operations
- */
--extern struct dma_map_ops dma_direct_ops;
-+extern const struct dma_map_ops dma_direct_ops;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- /* We don't handle the NULL dev case for ISA for now. We could
- * do it via an out of line call but it is not needed for now. The
-@@ -63,14 +63,14 @@ static inline struct dma_map_ops *get_dm
- return dev->archdata.dma_ops;
- }
-
--static inline void set_dma_ops(struct device *dev, struct dma_map_ops *ops)
-+static inline void set_dma_ops(struct device *dev, const struct dma_map_ops *ops)
- {
- dev->archdata.dma_ops = ops;
- }
-
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (unlikely(!ops))
- return 0;
-@@ -81,7 +81,7 @@ static inline int dma_supported(struct d
-
- static inline int dma_set_mask(struct device *dev, u64 dma_mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (unlikely(ops == NULL))
- return -EIO;
-@@ -97,7 +97,7 @@ static inline int dma_set_mask(struct de
-
- static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- if (ops->mapping_error)
- return ops->mapping_error(dev, dma_addr);
-
-@@ -110,7 +110,7 @@ static inline int dma_mapping_error(stru
- static inline void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *dma_handle, gfp_t flag)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- void *memory;
-
- BUG_ON(!ops);
-@@ -124,7 +124,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *cpu_addr, dma_addr_t dma_handle)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- BUG_ON(!ops);
- debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
-diff -urNp linux-2.6.39.3/arch/microblaze/include/asm/pci.h linux-2.6.39.3/arch/microblaze/include/asm/pci.h
---- linux-2.6.39.3/arch/microblaze/include/asm/pci.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/include/asm/pci.h 2011-05-22 19:36:30.000000000 -0400
-@@ -54,8 +54,8 @@ static inline void pcibios_penalize_isa_
- }
-
- #ifdef CONFIG_PCI
--extern void set_pci_dma_ops(struct dma_map_ops *dma_ops);
--extern struct dma_map_ops *get_pci_dma_ops(void);
-+extern void set_pci_dma_ops(const struct dma_map_ops *dma_ops);
-+extern const struct dma_map_ops *get_pci_dma_ops(void);
- #else /* CONFIG_PCI */
- #define set_pci_dma_ops(d)
- #define get_pci_dma_ops() NULL
-diff -urNp linux-2.6.39.3/arch/microblaze/kernel/dma.c linux-2.6.39.3/arch/microblaze/kernel/dma.c
---- linux-2.6.39.3/arch/microblaze/kernel/dma.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/kernel/dma.c 2011-05-22 19:36:30.000000000 -0400
-@@ -134,7 +134,7 @@ static inline void dma_direct_unmap_page
- __dma_sync_page(dma_address, 0 , size, direction);
- }
-
--struct dma_map_ops dma_direct_ops = {
-+const struct dma_map_ops dma_direct_ops = {
- .alloc_coherent = dma_direct_alloc_coherent,
- .free_coherent = dma_direct_free_coherent,
- .map_sg = dma_direct_map_sg,
-diff -urNp linux-2.6.39.3/arch/microblaze/kernel/kgdb.c linux-2.6.39.3/arch/microblaze/kernel/kgdb.c
---- linux-2.6.39.3/arch/microblaze/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -141,7 +141,7 @@ void kgdb_arch_exit(void)
- /*
- * Global data
- */
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- #ifdef __MICROBLAZEEL__
- .gdb_bpt_instr = {0x18, 0x00, 0x0c, 0xba}, /* brki r16, 0x18 */
- #else
-diff -urNp linux-2.6.39.3/arch/microblaze/pci/indirect_pci.c linux-2.6.39.3/arch/microblaze/pci/indirect_pci.c
---- linux-2.6.39.3/arch/microblaze/pci/indirect_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/pci/indirect_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -140,7 +140,7 @@ indirect_write_config(struct pci_bus *bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops indirect_pci_ops = {
-+static const struct pci_ops indirect_pci_ops = {
- .read = indirect_read_config,
- .write = indirect_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/microblaze/pci/pci-common.c linux-2.6.39.3/arch/microblaze/pci/pci-common.c
---- linux-2.6.39.3/arch/microblaze/pci/pci-common.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/microblaze/pci/pci-common.c 2011-05-22 19:36:30.000000000 -0400
-@@ -48,14 +48,14 @@ resource_size_t isa_mem_base;
- /* Default PCI flags is 0 on ppc32, modified at boot on ppc64 */
- unsigned int pci_flags;
-
--static struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
-+static const struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
-
--void set_pci_dma_ops(struct dma_map_ops *dma_ops)
-+void set_pci_dma_ops(const struct dma_map_ops *dma_ops)
- {
- pci_dma_ops = dma_ops;
- }
-
--struct dma_map_ops *get_pci_dma_ops(void)
-+const struct dma_map_ops *get_pci_dma_ops(void)
- {
- return pci_dma_ops;
- }
-@@ -1583,7 +1583,7 @@ null_write_config(struct pci_bus *bus, u
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
--static struct pci_ops null_pci_ops = {
-+static const struct pci_ops null_pci_ops = {
- .read = null_read_config,
- .write = null_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/alchemy/common/pci.c linux-2.6.39.3/arch/mips/alchemy/common/pci.c
---- linux-2.6.39.3/arch/mips/alchemy/common/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/alchemy/common/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -51,7 +51,7 @@ static struct resource pci_mem_resource
- .flags = IORESOURCE_MEM
- };
-
--extern struct pci_ops au1x_pci_ops;
-+extern const struct pci_ops au1x_pci_ops;
-
- static struct pci_controller au1x_controller = {
- .pci_ops = &au1x_pci_ops,
-diff -urNp linux-2.6.39.3/arch/mips/cavium-octeon/dma-octeon.c linux-2.6.39.3/arch/mips/cavium-octeon/dma-octeon.c
---- linux-2.6.39.3/arch/mips/cavium-octeon/dma-octeon.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/cavium-octeon/dma-octeon.c 2011-05-22 19:36:30.000000000 -0400
-@@ -202,7 +202,7 @@ static phys_addr_t octeon_unity_dma_to_p
- }
-
- struct octeon_dma_map_ops {
-- struct dma_map_ops dma_map_ops;
-+ const struct dma_map_ops dma_map_ops;
- dma_addr_t (*phys_to_dma)(struct device *dev, phys_addr_t paddr);
- phys_addr_t (*dma_to_phys)(struct device *dev, dma_addr_t daddr);
- };
-@@ -324,7 +324,7 @@ static struct octeon_dma_map_ops _octeon
- },
- };
-
--struct dma_map_ops *octeon_pci_dma_map_ops;
-+const struct dma_map_ops *octeon_pci_dma_map_ops;
-
- void __init octeon_pci_dma_init(void)
- {
-diff -urNp linux-2.6.39.3/arch/mips/cobalt/pci.c linux-2.6.39.3/arch/mips/cobalt/pci.c
---- linux-2.6.39.3/arch/mips/cobalt/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/cobalt/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -14,7 +14,7 @@
-
- #include <asm/gt64120.h>
-
--extern struct pci_ops gt64xxx_pci0_ops;
-+extern const struct pci_ops gt64xxx_pci0_ops;
-
- static struct resource cobalt_mem_resource = {
- .start = GT_DEF_PCI0_MEM0_BASE,
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/device.h linux-2.6.39.3/arch/mips/include/asm/device.h
---- linux-2.6.39.3/arch/mips/include/asm/device.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/device.h 2011-05-22 19:36:30.000000000 -0400
-@@ -10,7 +10,7 @@ struct dma_map_ops;
-
- struct dev_archdata {
- /* DMA operations on that device */
-- struct dma_map_ops *dma_ops;
-+ const struct dma_map_ops *dma_ops;
- };
-
- struct pdev_archdata {
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/dma-mapping.h linux-2.6.39.3/arch/mips/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/mips/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -9,9 +9,9 @@
- #include <dma-coherence.h>
- #endif
-
--extern struct dma_map_ops *mips_dma_map_ops;
-+extern const struct dma_map_ops *mips_dma_map_ops;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- if (dev && dev->archdata.dma_ops)
- return dev->archdata.dma_ops;
-@@ -33,13 +33,13 @@ static inline void dma_mark_clean(void *
-
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- return ops->dma_supported(dev, mask);
- }
-
- static inline int dma_mapping_error(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- return ops->mapping_error(dev, mask);
- }
-
-@@ -61,7 +61,7 @@ static inline void *dma_alloc_coherent(s
- dma_addr_t *dma_handle, gfp_t gfp)
- {
- void *ret;
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- ret = ops->alloc_coherent(dev, size, dma_handle, gfp);
-
-@@ -73,7 +73,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *vaddr, dma_addr_t dma_handle)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- ops->free_coherent(dev, size, vaddr, dma_handle);
-
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/elf.h linux-2.6.39.3/arch/mips/include/asm/elf.h
---- linux-2.6.39.3/arch/mips/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/include/asm/elf.h linux-2.6.39.4/arch/mips/include/asm/elf.h
+--- linux-2.6.39.4/arch/mips/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -372,13 +372,16 @@ extern const char *__elf_platform;
#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
#endif
@@ -2301,21 +1105,9 @@ diff -urNp linux-2.6.39.3/arch/mips/include/asm/elf.h linux-2.6.39.3/arch/mips/i
-#define arch_randomize_brk arch_randomize_brk
-
#endif /* _ASM_ELF_H */
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h linux-2.6.39.3/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h
---- linux-2.6.39.3/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/mach-cavium-octeon/dma-coherence.h 2011-05-22 19:36:30.000000000 -0400
-@@ -66,7 +66,7 @@ dma_addr_t phys_to_dma(struct device *de
- phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr);
-
- struct dma_map_ops;
--extern struct dma_map_ops *octeon_pci_dma_map_ops;
-+extern const struct dma_map_ops *octeon_pci_dma_map_ops;
- extern char *octeon_swiotlb;
-
- #endif /* __ASM_MACH_CAVIUM_OCTEON_DMA_COHERENCE_H */
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/page.h linux-2.6.39.3/arch/mips/include/asm/page.h
---- linux-2.6.39.3/arch/mips/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/page.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/include/asm/page.h linux-2.6.39.4/arch/mips/include/asm/page.h
+--- linux-2.6.39.4/arch/mips/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/include/asm/page.h 2011-08-05 19:44:33.000000000 -0400
@@ -93,7 +93,7 @@ extern void copy_user_highpage(struct pa
#ifdef CONFIG_CPU_MIPS32
typedef struct { unsigned long pte_low, pte_high; } pte_t;
@@ -2325,20 +1117,9 @@ diff -urNp linux-2.6.39.3/arch/mips/include/asm/page.h linux-2.6.39.3/arch/mips/
#else
typedef struct { unsigned long long pte; } pte_t;
#define pte_val(x) ((x).pte)
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/pci/bridge.h linux-2.6.39.3/arch/mips/include/asm/pci/bridge.h
---- linux-2.6.39.3/arch/mips/include/asm/pci/bridge.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/pci/bridge.h 2011-05-22 19:36:30.000000000 -0400
-@@ -849,6 +849,6 @@ struct bridge_controller {
- extern void register_bridge_irq(unsigned int irq);
- extern int request_bridge_irq(struct bridge_controller *bc);
-
--extern struct pci_ops bridge_pci_ops;
-+extern const struct pci_ops bridge_pci_ops;
-
- #endif /* _ASM_PCI_BRIDGE_H */
-diff -urNp linux-2.6.39.3/arch/mips/include/asm/system.h linux-2.6.39.3/arch/mips/include/asm/system.h
---- linux-2.6.39.3/arch/mips/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/include/asm/system.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/include/asm/system.h linux-2.6.39.4/arch/mips/include/asm/system.h
+--- linux-2.6.39.4/arch/mips/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/include/asm/system.h 2011-08-05 19:44:33.000000000 -0400
@@ -230,6 +230,6 @@ extern void per_cpu_trap_init(void);
*/
#define __ARCH_WANT_UNLOCKED_CTXSW
@@ -2347,9 +1128,9 @@ diff -urNp linux-2.6.39.3/arch/mips/include/asm/system.h linux-2.6.39.3/arch/mip
+#define arch_align_stack(x) ((x) & ~0xfUL)
#endif /* _ASM_SYSTEM_H */
-diff -urNp linux-2.6.39.3/arch/mips/kernel/binfmt_elfn32.c linux-2.6.39.3/arch/mips/kernel/binfmt_elfn32.c
---- linux-2.6.39.3/arch/mips/kernel/binfmt_elfn32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/kernel/binfmt_elfn32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/kernel/binfmt_elfn32.c linux-2.6.39.4/arch/mips/kernel/binfmt_elfn32.c
+--- linux-2.6.39.4/arch/mips/kernel/binfmt_elfn32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/kernel/binfmt_elfn32.c 2011-08-05 19:44:33.000000000 -0400
@@ -50,6 +50,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
#undef ELF_ET_DYN_BASE
#define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
@@ -2364,9 +1145,9 @@ diff -urNp linux-2.6.39.3/arch/mips/kernel/binfmt_elfn32.c linux-2.6.39.3/arch/m
#include <asm/processor.h>
#include <linux/module.h>
#include <linux/elfcore.h>
-diff -urNp linux-2.6.39.3/arch/mips/kernel/binfmt_elfo32.c linux-2.6.39.3/arch/mips/kernel/binfmt_elfo32.c
---- linux-2.6.39.3/arch/mips/kernel/binfmt_elfo32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/kernel/binfmt_elfo32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/kernel/binfmt_elfo32.c linux-2.6.39.4/arch/mips/kernel/binfmt_elfo32.c
+--- linux-2.6.39.4/arch/mips/kernel/binfmt_elfo32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/kernel/binfmt_elfo32.c 2011-08-05 19:44:33.000000000 -0400
@@ -52,6 +52,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_N
#undef ELF_ET_DYN_BASE
#define ELF_ET_DYN_BASE (TASK32_SIZE / 3 * 2)
@@ -2381,21 +1162,9 @@ diff -urNp linux-2.6.39.3/arch/mips/kernel/binfmt_elfo32.c linux-2.6.39.3/arch/m
#include <asm/processor.h>
/*
-diff -urNp linux-2.6.39.3/arch/mips/kernel/kgdb.c linux-2.6.39.3/arch/mips/kernel/kgdb.c
---- linux-2.6.39.3/arch/mips/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -351,7 +351,7 @@ int kgdb_arch_handle_exception(int vecto
- return -1;
- }
-
--struct kgdb_arch arch_kgdb_ops;
-+struct kgdb_arch arch_kgdb_ops; /* cannot be const, see kgdb_arch_init */
-
- /*
- * We use kgdb_early_setup so that functions we need to call now don't
-diff -urNp linux-2.6.39.3/arch/mips/kernel/process.c linux-2.6.39.3/arch/mips/kernel/process.c
---- linux-2.6.39.3/arch/mips/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/kernel/process.c linux-2.6.39.4/arch/mips/kernel/process.c
+--- linux-2.6.39.4/arch/mips/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -473,15 +473,3 @@ unsigned long get_wchan(struct task_stru
out:
return pc;
@@ -2412,9 +1181,9 @@ diff -urNp linux-2.6.39.3/arch/mips/kernel/process.c linux-2.6.39.3/arch/mips/ke
-
- return sp & ALMASK;
-}
-diff -urNp linux-2.6.39.3/arch/mips/kernel/syscall.c linux-2.6.39.3/arch/mips/kernel/syscall.c
---- linux-2.6.39.3/arch/mips/kernel/syscall.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/kernel/syscall.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/kernel/syscall.c linux-2.6.39.4/arch/mips/kernel/syscall.c
+--- linux-2.6.39.4/arch/mips/kernel/syscall.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/kernel/syscall.c 2011-08-05 19:44:33.000000000 -0400
@@ -108,14 +108,18 @@ unsigned long arch_get_unmapped_area(str
do_color_align = 0;
if (filp || (flags & MAP_SHARED))
@@ -2479,30 +1248,9 @@ diff -urNp linux-2.6.39.3/arch/mips/kernel/syscall.c linux-2.6.39.3/arch/mips/ke
SYSCALL_DEFINE6(mips_mmap, unsigned long, addr, unsigned long, len,
unsigned long, prot, unsigned long, flags, unsigned long,
fd, off_t, offset)
-diff -urNp linux-2.6.39.3/arch/mips/mm/dma-default.c linux-2.6.39.3/arch/mips/mm/dma-default.c
---- linux-2.6.39.3/arch/mips/mm/dma-default.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/mm/dma-default.c 2011-05-22 19:36:30.000000000 -0400
-@@ -300,7 +300,7 @@ void dma_cache_sync(struct device *dev,
-
- EXPORT_SYMBOL(dma_cache_sync);
-
--static struct dma_map_ops mips_default_dma_map_ops = {
-+static const struct dma_map_ops mips_default_dma_map_ops = {
- .alloc_coherent = mips_dma_alloc_coherent,
- .free_coherent = mips_dma_free_coherent,
- .map_page = mips_dma_map_page,
-@@ -315,7 +315,7 @@ static struct dma_map_ops mips_default_d
- .dma_supported = mips_dma_supported
- };
-
--struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops;
-+const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops;
- EXPORT_SYMBOL(mips_dma_map_ops);
-
- #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16)
-diff -urNp linux-2.6.39.3/arch/mips/mm/fault.c linux-2.6.39.3/arch/mips/mm/fault.c
---- linux-2.6.39.3/arch/mips/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/mips/mm/fault.c linux-2.6.39.4/arch/mips/mm/fault.c
+--- linux-2.6.39.4/arch/mips/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/mips/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -28,6 +28,23 @@
#include <asm/highmem.h> /* For VMALLOC_END */
#include <linux/kdebug.h>
@@ -2527,542 +1275,9 @@ diff -urNp linux-2.6.39.3/arch/mips/mm/fault.c linux-2.6.39.3/arch/mips/mm/fault
/*
* This routine handles page faults. It determines the address,
* and the problem, and then passes it off to one of the appropriate
-diff -urNp linux-2.6.39.3/arch/mips/mti-malta/malta-pci.c linux-2.6.39.3/arch/mips/mti-malta/malta-pci.c
---- linux-2.6.39.3/arch/mips/mti-malta/malta-pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/mti-malta/malta-pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -64,9 +64,9 @@ static struct resource msc_io_resource =
- .flags = IORESOURCE_IO,
- };
-
--extern struct pci_ops bonito64_pci_ops;
--extern struct pci_ops gt64xxx_pci0_ops;
--extern struct pci_ops msc_pci_ops;
-+extern const struct pci_ops bonito64_pci_ops;
-+extern const struct pci_ops gt64xxx_pci0_ops;
-+extern const struct pci_ops msc_pci_ops;
-
- static struct pci_controller bonito64_controller = {
- .pci_ops = &bonito64_pci_ops,
-diff -urNp linux-2.6.39.3/arch/mips/nxp/pnx8550/common/pci.c linux-2.6.39.3/arch/mips/nxp/pnx8550/common/pci.c
---- linux-2.6.39.3/arch/mips/nxp/pnx8550/common/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/nxp/pnx8550/common/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -40,7 +40,7 @@ static struct resource pci_mem_resource
- .flags = IORESOURCE_MEM
- };
-
--extern struct pci_ops pnx8550_pci_ops;
-+extern const struct pci_ops pnx8550_pci_ops;
-
- static struct pci_controller pnx8550_controller = {
- .pci_ops = &pnx8550_pci_ops,
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-au1000.c linux-2.6.39.3/arch/mips/pci/ops-au1000.c
---- linux-2.6.39.3/arch/mips/pci/ops-au1000.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-au1000.c 2011-05-22 19:36:30.000000000 -0400
-@@ -302,7 +302,7 @@ static int config_write(struct pci_bus *
- }
- }
-
--struct pci_ops au1x_pci_ops = {
-+const struct pci_ops au1x_pci_ops = {
- config_read,
- config_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-bcm63xx.c linux-2.6.39.3/arch/mips/pci/ops-bcm63xx.c
---- linux-2.6.39.3/arch/mips/pci/ops-bcm63xx.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-bcm63xx.c 2011-05-22 19:36:30.000000000 -0400
-@@ -173,7 +173,7 @@ static int bcm63xx_pci_write(struct pci_
- where, size, val);
- }
-
--struct pci_ops bcm63xx_pci_ops = {
-+const struct pci_ops bcm63xx_pci_ops = {
- .read = bcm63xx_pci_read,
- .write = bcm63xx_pci_write
- };
-@@ -402,7 +402,7 @@ static int bcm63xx_cb_write(struct pci_b
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
--struct pci_ops bcm63xx_cb_ops = {
-+const struct pci_ops bcm63xx_cb_ops = {
- .read = bcm63xx_cb_read,
- .write = bcm63xx_cb_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-bonito64.c linux-2.6.39.3/arch/mips/pci/ops-bonito64.c
---- linux-2.6.39.3/arch/mips/pci/ops-bonito64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-bonito64.c 2011-05-22 19:36:30.000000000 -0400
-@@ -155,7 +155,7 @@ static int bonito64_pcibios_write(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops bonito64_pci_ops = {
-+const struct pci_ops bonito64_pci_ops = {
- .read = bonito64_pcibios_read,
- .write = bonito64_pcibios_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-bridge.c linux-2.6.39.3/arch/mips/pci/ops-bridge.c
---- linux-2.6.39.3/arch/mips/pci/ops-bridge.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-bridge.c 2011-05-22 19:36:30.000000000 -0400
-@@ -316,7 +316,7 @@ static int pci_write_config(struct pci_b
- return pci_conf0_write_config(bus, devfn, where, size, value);
- }
-
--struct pci_ops bridge_pci_ops = {
-+const struct pci_ops bridge_pci_ops = {
- .read = pci_read_config,
- .write = pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-emma2rh.c linux-2.6.39.3/arch/mips/pci/ops-emma2rh.c
---- linux-2.6.39.3/arch/mips/pci/ops-emma2rh.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-emma2rh.c 2011-05-22 19:36:30.000000000 -0400
-@@ -176,7 +176,7 @@ static int pci_config_write(struct pci_b
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops emma2rh_pci_ops = {
-+const struct pci_ops emma2rh_pci_ops = {
- .read = pci_config_read,
- .write = pci_config_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-gt64xxx_pci0.c linux-2.6.39.3/arch/mips/pci/ops-gt64xxx_pci0.c
---- linux-2.6.39.3/arch/mips/pci/ops-gt64xxx_pci0.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-gt64xxx_pci0.c 2011-05-22 19:36:30.000000000 -0400
-@@ -146,7 +146,7 @@ static int gt64xxx_pci0_pcibios_write(st
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops gt64xxx_pci0_ops = {
-+const struct pci_ops gt64xxx_pci0_ops = {
- .read = gt64xxx_pci0_pcibios_read,
- .write = gt64xxx_pci0_pcibios_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-loongson2.c linux-2.6.39.3/arch/mips/pci/ops-loongson2.c
---- linux-2.6.39.3/arch/mips/pci/ops-loongson2.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-loongson2.c 2011-05-22 19:36:30.000000000 -0400
-@@ -174,7 +174,7 @@ static int loongson_pcibios_write(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops loongson_pci_ops = {
-+const struct pci_ops loongson_pci_ops = {
- .read = loongson_pcibios_read,
- .write = loongson_pcibios_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-mace.c linux-2.6.39.3/arch/mips/pci/ops-mace.c
---- linux-2.6.39.3/arch/mips/pci/ops-mace.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-mace.c 2011-05-22 19:36:30.000000000 -0400
-@@ -96,7 +96,7 @@ mace_pci_write_config(struct pci_bus *bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops mace_pci_ops = {
-+const struct pci_ops mace_pci_ops = {
- .read = mace_pci_read_config,
- .write = mace_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-msc.c linux-2.6.39.3/arch/mips/pci/ops-msc.c
---- linux-2.6.39.3/arch/mips/pci/ops-msc.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-msc.c 2011-05-22 19:36:30.000000000 -0400
-@@ -142,7 +142,7 @@ static int msc_pcibios_write(struct pci_
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops msc_pci_ops = {
-+const struct pci_ops msc_pci_ops = {
- .read = msc_pcibios_read,
- .write = msc_pcibios_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-nile4.c linux-2.6.39.3/arch/mips/pci/ops-nile4.c
---- linux-2.6.39.3/arch/mips/pci/ops-nile4.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-nile4.c 2011-05-22 19:36:30.000000000 -0400
-@@ -141,7 +141,7 @@ static int nile4_pcibios_write(struct pc
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops nile4_pci_ops = {
-+const struct pci_ops nile4_pci_ops = {
- .read = nile4_pcibios_read,
- .write = nile4_pcibios_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-pmcmsp.c linux-2.6.39.3/arch/mips/pci/ops-pmcmsp.c
---- linux-2.6.39.3/arch/mips/pci/ops-pmcmsp.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-pmcmsp.c 2011-05-22 19:36:30.000000000 -0400
-@@ -904,7 +904,7 @@ msp_pcibios_write_config(struct pci_bus
- * write - function for Linux to generate PCI Configuration writes.
- *
- ****************************************************************************/
--struct pci_ops msp_pci_ops = {
-+const struct pci_ops msp_pci_ops = {
- .read = msp_pcibios_read_config,
- .write = msp_pcibios_write_config
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-pnx8550.c linux-2.6.39.3/arch/mips/pci/ops-pnx8550.c
---- linux-2.6.39.3/arch/mips/pci/ops-pnx8550.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-pnx8550.c 2011-05-22 19:36:30.000000000 -0400
-@@ -276,7 +276,7 @@ static int config_write(struct pci_bus *
- }
- }
-
--struct pci_ops pnx8550_pci_ops = {
-+const struct pci_ops pnx8550_pci_ops = {
- config_read,
- config_write
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-rc32434.c linux-2.6.39.3/arch/mips/pci/ops-rc32434.c
---- linux-2.6.39.3/arch/mips/pci/ops-rc32434.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-rc32434.c 2011-05-22 19:36:30.000000000 -0400
-@@ -201,7 +201,7 @@ static int pci_config_write(struct pci_b
- }
- }
-
--struct pci_ops rc32434_pci_ops = {
-+const struct pci_ops rc32434_pci_ops = {
- .read = pci_config_read,
- .write = pci_config_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-sni.c linux-2.6.39.3/arch/mips/pci/ops-sni.c
---- linux-2.6.39.3/arch/mips/pci/ops-sni.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-sni.c 2011-05-22 19:36:30.000000000 -0400
-@@ -83,7 +83,7 @@ static int pcimt_write(struct pci_bus *b
- return 0;
- }
-
--struct pci_ops sni_pcimt_ops = {
-+const struct pci_ops sni_pcimt_ops = {
- .read = pcimt_read,
- .write = pcimt_write,
- };
-@@ -158,7 +158,7 @@ static int pcit_write(struct pci_bus *bu
- }
-
-
--struct pci_ops sni_pcit_ops = {
-+const struct pci_ops sni_pcit_ops = {
- .read = pcit_read,
- .write = pcit_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-titan.c linux-2.6.39.3/arch/mips/pci/ops-titan.c
---- linux-2.6.39.3/arch/mips/pci/ops-titan.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-titan.c 2011-05-22 19:36:30.000000000 -0400
-@@ -105,7 +105,7 @@ static int titan_write_config(struct pci
- /*
- * Titan PCI structure
- */
--struct pci_ops titan_pci_ops = {
-+const struct pci_ops titan_pci_ops = {
- titan_read_config,
- titan_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-titan-ht.c linux-2.6.39.3/arch/mips/pci/ops-titan-ht.c
---- linux-2.6.39.3/arch/mips/pci/ops-titan-ht.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-titan-ht.c 2011-05-22 19:36:30.000000000 -0400
-@@ -118,7 +118,7 @@ static int titan_ht_config_write(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops titan_ht_pci_ops = {
-+const struct pci_ops titan_ht_pci_ops = {
- .read = titan_ht_config_read,
- .write = titan_ht_config_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-tx3927.c linux-2.6.39.3/arch/mips/pci/ops-tx3927.c
---- linux-2.6.39.3/arch/mips/pci/ops-tx3927.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-tx3927.c 2011-05-22 19:36:30.000000000 -0400
-@@ -121,7 +121,7 @@ static int tx3927_pci_write_config(struc
- return check_abort();
- }
-
--static struct pci_ops tx3927_pci_ops = {
-+static const struct pci_ops tx3927_pci_ops = {
- .read = tx3927_pci_read_config,
- .write = tx3927_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/ops-vr41xx.c linux-2.6.39.3/arch/mips/pci/ops-vr41xx.c
---- linux-2.6.39.3/arch/mips/pci/ops-vr41xx.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/ops-vr41xx.c 2011-05-22 19:36:30.000000000 -0400
-@@ -120,7 +120,7 @@ static int pci_config_write(struct pci_b
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops vr41xx_pci_ops = {
-+const struct pci_ops vr41xx_pci_ops = {
- .read = pci_config_read,
- .write = pci_config_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-bcm1480.c linux-2.6.39.3/arch/mips/pci/pci-bcm1480.c
---- linux-2.6.39.3/arch/mips/pci/pci-bcm1480.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-bcm1480.c 2011-05-22 19:36:30.000000000 -0400
-@@ -171,7 +171,7 @@ static int bcm1480_pcibios_write(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops bcm1480_pci_ops = {
-+const struct pci_ops bcm1480_pci_ops = {
- bcm1480_pcibios_read,
- bcm1480_pcibios_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-bcm1480ht.c linux-2.6.39.3/arch/mips/pci/pci-bcm1480ht.c
---- linux-2.6.39.3/arch/mips/pci/pci-bcm1480ht.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-bcm1480ht.c 2011-05-22 19:36:30.000000000 -0400
-@@ -166,7 +166,7 @@ static int bcm1480ht_pcibios_get_busno(v
- return 0;
- }
-
--struct pci_ops bcm1480ht_pci_ops = {
-+const struct pci_ops bcm1480ht_pci_ops = {
- .read = bcm1480ht_pcibios_read,
- .write = bcm1480ht_pcibios_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-bcm63xx.h linux-2.6.39.3/arch/mips/pci/pci-bcm63xx.h
---- linux-2.6.39.3/arch/mips/pci/pci-bcm63xx.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-bcm63xx.h 2011-05-22 19:36:30.000000000 -0400
-@@ -16,8 +16,8 @@
- /*
- * defined in ops-bcm63xx.c
- */
--extern struct pci_ops bcm63xx_pci_ops;
--extern struct pci_ops bcm63xx_cb_ops;
-+extern const struct pci_ops bcm63xx_pci_ops;
-+extern const struct pci_ops bcm63xx_cb_ops;
-
- /*
- * defined in pci-bcm63xx.c
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-emma2rh.c linux-2.6.39.3/arch/mips/pci/pci-emma2rh.c
---- linux-2.6.39.3/arch/mips/pci/pci-emma2rh.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-emma2rh.c 2011-05-22 19:36:30.000000000 -0400
-@@ -43,7 +43,7 @@ static struct resource pci_mem_resource
- .flags = IORESOURCE_MEM,
- };
-
--extern struct pci_ops emma2rh_pci_ops;
-+extern const struct pci_ops emma2rh_pci_ops;
-
- static struct pci_controller emma2rh_pci_controller = {
- .pci_ops = &emma2rh_pci_ops,
-diff -urNp linux-2.6.39.3/arch/mips/pci/pcie-octeon.c linux-2.6.39.3/arch/mips/pci/pcie-octeon.c
---- linux-2.6.39.3/arch/mips/pci/pcie-octeon.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pcie-octeon.c 2011-05-22 19:36:30.000000000 -0400
-@@ -1237,7 +1237,7 @@ static int octeon_pcie1_write_config(str
- return octeon_pcie_write_config(1, bus, devfn, reg, size, val);
- }
-
--static struct pci_ops octeon_pcie0_ops = {
-+static const struct pci_ops octeon_pcie0_ops = {
- octeon_pcie0_read_config,
- octeon_pcie0_write_config,
- };
-@@ -1258,7 +1258,7 @@ static struct pci_controller octeon_pcie
- .io_resource = &octeon_pcie0_io_resource,
- };
-
--static struct pci_ops octeon_pcie1_ops = {
-+static const struct pci_ops octeon_pcie1_ops = {
- octeon_pcie1_read_config,
- octeon_pcie1_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-ip27.c linux-2.6.39.3/arch/mips/pci/pci-ip27.c
---- linux-2.6.39.3/arch/mips/pci/pci-ip27.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-ip27.c 2011-05-22 19:36:30.000000000 -0400
-@@ -39,7 +39,7 @@ static struct bridge_controller bridges[
- struct bridge_controller *irq_to_bridge[MAX_PCI_BUSSES * MAX_DEVICES_PER_PCIBUS];
- int irq_to_slot[MAX_PCI_BUSSES * MAX_DEVICES_PER_PCIBUS];
-
--extern struct pci_ops bridge_pci_ops;
-+extern const struct pci_ops bridge_pci_ops;
-
- int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid)
- {
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-ip32.c linux-2.6.39.3/arch/mips/pci/pci-ip32.c
---- linux-2.6.39.3/arch/mips/pci/pci-ip32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-ip32.c 2011-05-22 19:36:30.000000000 -0400
-@@ -82,7 +82,7 @@ static irqreturn_t macepci_error(int irq
- }
-
-
--extern struct pci_ops mace_pci_ops;
-+extern const struct pci_ops mace_pci_ops;
- #ifdef CONFIG_64BIT
- static struct resource mace_pci_mem_resource = {
- .name = "SGI O2 PCI MEM",
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-lasat.c linux-2.6.39.3/arch/mips/pci/pci-lasat.c
---- linux-2.6.39.3/arch/mips/pci/pci-lasat.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-lasat.c 2011-05-22 19:36:30.000000000 -0400
-@@ -14,8 +14,8 @@
-
- #include <irq.h>
-
--extern struct pci_ops nile4_pci_ops;
--extern struct pci_ops gt64xxx_pci0_ops;
-+extern const struct pci_ops nile4_pci_ops;
-+extern const struct pci_ops gt64xxx_pci0_ops;
- static struct resource lasat_pci_mem_resource = {
- .name = "LASAT PCI MEM",
- .start = 0x18000000,
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-octeon.c linux-2.6.39.3/arch/mips/pci/pci-octeon.c
---- linux-2.6.39.3/arch/mips/pci/pci-octeon.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-octeon.c 2011-05-22 19:36:30.000000000 -0400
-@@ -334,7 +334,7 @@ static int octeon_write_config(struct pc
- }
-
-
--static struct pci_ops octeon_pci_ops = {
-+static const struct pci_ops octeon_pci_ops = {
- octeon_read_config,
- octeon_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-rc32434.c linux-2.6.39.3/arch/mips/pci/pci-rc32434.c
---- linux-2.6.39.3/arch/mips/pci/pci-rc32434.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-rc32434.c 2011-05-22 19:36:30.000000000 -0400
-@@ -75,7 +75,7 @@ static struct resource rc32434_res_pci_i
- .flags = IORESOURCE_IO,
- };
-
--extern struct pci_ops rc32434_pci_ops;
-+extern const struct pci_ops rc32434_pci_ops;
-
- #define PCI_MEM1_START PCI_ADDR_START
- #define PCI_MEM1_END (PCI_ADDR_START + CPUTOPCI_MEM_WIN - 1)
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-sb1250.c linux-2.6.39.3/arch/mips/pci/pci-sb1250.c
---- linux-2.6.39.3/arch/mips/pci/pci-sb1250.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-sb1250.c 2011-05-22 19:36:30.000000000 -0400
-@@ -181,7 +181,7 @@ static int sb1250_pcibios_write(struct p
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops sb1250_pci_ops = {
-+const struct pci_ops sb1250_pci_ops = {
- .read = sb1250_pcibios_read,
- .write = sb1250_pcibios_write,
- };
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-vr41xx.c linux-2.6.39.3/arch/mips/pci/pci-vr41xx.c
---- linux-2.6.39.3/arch/mips/pci/pci-vr41xx.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-vr41xx.c 2011-05-22 19:36:30.000000000 -0400
-@@ -36,7 +36,7 @@
-
- #include "pci-vr41xx.h"
-
--extern struct pci_ops vr41xx_pci_ops;
-+extern const struct pci_ops vr41xx_pci_ops;
-
- static void __iomem *pciu_base;
-
-diff -urNp linux-2.6.39.3/arch/mips/pci/pci-yosemite.c linux-2.6.39.3/arch/mips/pci/pci-yosemite.c
---- linux-2.6.39.3/arch/mips/pci/pci-yosemite.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pci/pci-yosemite.c 2011-05-22 19:36:30.000000000 -0400
-@@ -11,7 +11,7 @@
- #include <linux/pci.h>
- #include <asm/titan_dep.h>
-
--extern struct pci_ops titan_pci_ops;
-+extern const struct pci_ops titan_pci_ops;
-
- static struct resource py_mem_resource = {
- .start = 0xe0000000UL,
-diff -urNp linux-2.6.39.3/arch/mips/pmc-sierra/yosemite/ht.c linux-2.6.39.3/arch/mips/pmc-sierra/yosemite/ht.c
---- linux-2.6.39.3/arch/mips/pmc-sierra/yosemite/ht.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pmc-sierra/yosemite/ht.c 2011-05-22 19:36:30.000000000 -0400
-@@ -366,7 +366,7 @@ resource_size_t pcibios_align_resource(v
- return start;
- }
-
--struct pci_ops titan_pci_ops = {
-+const struct pci_ops titan_pci_ops = {
- titan_ht_config_read_byte,
- titan_ht_config_read_word,
- titan_ht_config_read_dword,
-diff -urNp linux-2.6.39.3/arch/mips/pnx8550/common/pci.c linux-2.6.39.3/arch/mips/pnx8550/common/pci.c
---- linux-2.6.39.3/arch/mips/pnx8550/common/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/pnx8550/common/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -40,7 +40,7 @@ static struct resource pci_mem_resource
- .flags = IORESOURCE_MEM
- };
-
--extern struct pci_ops pnx8550_pci_ops;
-+extern const struct pci_ops pnx8550_pci_ops;
-
- static struct pci_controller pnx8550_controller = {
- .pci_ops = &pnx8550_pci_ops,
-diff -urNp linux-2.6.39.3/arch/mips/sni/pcimt.c linux-2.6.39.3/arch/mips/sni/pcimt.c
---- linux-2.6.39.3/arch/mips/sni/pcimt.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/sni/pcimt.c 2011-05-22 19:36:30.000000000 -0400
-@@ -183,7 +183,7 @@ static void __init sni_pcimt_resource_in
- request_resource(&sni_mem_resource, pcimt_mem_resources + i);
- }
-
--extern struct pci_ops sni_pcimt_ops;
-+extern const struct pci_ops sni_pcimt_ops;
-
- static struct pci_controller sni_controller = {
- .pci_ops = &sni_pcimt_ops,
-diff -urNp linux-2.6.39.3/arch/mips/sni/pcit.c linux-2.6.39.3/arch/mips/sni/pcit.c
---- linux-2.6.39.3/arch/mips/sni/pcit.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/sni/pcit.c 2011-05-22 19:36:30.000000000 -0400
-@@ -145,7 +145,7 @@ static void __init sni_pcit_resource_ini
- }
-
-
--extern struct pci_ops sni_pcit_ops;
-+extern const struct pci_ops sni_pcit_ops;
-
- static struct pci_controller sni_pcit_controller = {
- .pci_ops = &sni_pcit_ops,
-diff -urNp linux-2.6.39.3/arch/mips/wrppmc/pci.c linux-2.6.39.3/arch/mips/wrppmc/pci.c
---- linux-2.6.39.3/arch/mips/wrppmc/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mips/wrppmc/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -14,7 +14,7 @@
-
- #include <asm/gt64120.h>
-
--extern struct pci_ops gt64xxx_pci0_ops;
-+extern const struct pci_ops gt64xxx_pci0_ops;
-
- static struct resource pci0_io_resource = {
- .name = "pci_0 io",
-diff -urNp linux-2.6.39.3/arch/mn10300/unit-asb2305/pci-asb2305.h linux-2.6.39.3/arch/mn10300/unit-asb2305/pci-asb2305.h
---- linux-2.6.39.3/arch/mn10300/unit-asb2305/pci-asb2305.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mn10300/unit-asb2305/pci-asb2305.h 2011-05-22 19:36:30.000000000 -0400
-@@ -39,7 +39,7 @@ extern void pcibios_resource_survey(void
-
- extern int pcibios_last_bus;
- extern struct pci_bus *pci_root_bus;
--extern struct pci_ops *pci_root_ops;
-+extern const struct pci_ops *pci_root_ops;
-
- extern struct irq_routing_table *pcibios_get_irq_routing_table(void);
- extern int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
-diff -urNp linux-2.6.39.3/arch/mn10300/unit-asb2305/pci.c linux-2.6.39.3/arch/mn10300/unit-asb2305/pci.c
---- linux-2.6.39.3/arch/mn10300/unit-asb2305/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/mn10300/unit-asb2305/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -24,7 +24,7 @@ unsigned int pci_probe = 1;
-
- int pcibios_last_bus = -1;
- struct pci_bus *pci_root_bus;
--struct pci_ops *pci_root_ops;
-+const struct pci_ops *pci_root_ops;
-
- /*
- * The accessible PCI window does not cover the entire CPU address space, but
-@@ -274,7 +274,7 @@ static int pci_ampci_write_config(struct
- }
- }
-
--static struct pci_ops pci_direct_ampci = {
-+static const struct pci_ops pci_direct_ampci = {
- pci_ampci_read_config,
- pci_ampci_write_config,
- };
-@@ -289,7 +289,7 @@ static struct pci_ops pci_direct_ampci =
- * This should be close to trivial, but it isn't, because there are buggy
- * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
- */
--static int __init pci_sanity_check(struct pci_ops *o)
-+static int __init pci_sanity_check(const struct pci_ops *o)
- {
- struct pci_bus bus; /* Fake bus and device */
- u32 x;
-diff -urNp linux-2.6.39.3/arch/parisc/include/asm/elf.h linux-2.6.39.3/arch/parisc/include/asm/elf.h
---- linux-2.6.39.3/arch/parisc/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/include/asm/elf.h linux-2.6.39.4/arch/parisc/include/asm/elf.h
+--- linux-2.6.39.4/arch/parisc/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -342,6 +342,13 @@ struct pt_regs; /* forward declaration..
#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x01000000)
@@ -3077,9 +1292,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/include/asm/elf.h linux-2.6.39.3/arch/pari
/* This yields a mask that user programs can use to figure out what
instruction set this CPU supports. This could be done in user space,
but it's not easy, and we've already done it here. */
-diff -urNp linux-2.6.39.3/arch/parisc/include/asm/pgtable.h linux-2.6.39.3/arch/parisc/include/asm/pgtable.h
---- linux-2.6.39.3/arch/parisc/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/include/asm/pgtable.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/include/asm/pgtable.h linux-2.6.39.4/arch/parisc/include/asm/pgtable.h
+--- linux-2.6.39.4/arch/parisc/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/include/asm/pgtable.h 2011-08-05 19:44:33.000000000 -0400
@@ -207,6 +207,17 @@ struct vm_area_struct;
#define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_EXEC |_PAGE_ACCESSED)
#define PAGE_COPY PAGE_EXECREAD
@@ -3098,9 +1313,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/include/asm/pgtable.h linux-2.6.39.3/arch/
#define PAGE_KERNEL __pgprot(_PAGE_KERNEL)
#define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
#define PAGE_KERNEL_UNC __pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)
-diff -urNp linux-2.6.39.3/arch/parisc/kernel/module.c linux-2.6.39.3/arch/parisc/kernel/module.c
---- linux-2.6.39.3/arch/parisc/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/kernel/module.c linux-2.6.39.4/arch/parisc/kernel/module.c
+--- linux-2.6.39.4/arch/parisc/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -96,16 +96,38 @@
/* three functions to determine where in the module core
@@ -3201,9 +1416,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/kernel/module.c linux-2.6.39.3/arch/parisc
DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n",
me->arch.unwind_section, table, end, gp);
-diff -urNp linux-2.6.39.3/arch/parisc/kernel/sys_parisc.c linux-2.6.39.3/arch/parisc/kernel/sys_parisc.c
---- linux-2.6.39.3/arch/parisc/kernel/sys_parisc.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/kernel/sys_parisc.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/kernel/sys_parisc.c linux-2.6.39.4/arch/parisc/kernel/sys_parisc.c
+--- linux-2.6.39.4/arch/parisc/kernel/sys_parisc.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/kernel/sys_parisc.c 2011-08-05 19:44:33.000000000 -0400
@@ -43,7 +43,7 @@ static unsigned long get_unshared_area(u
/* At this point: (!vma || addr < vma->vm_end). */
if (TASK_SIZE - len < addr)
@@ -3231,9 +1446,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/kernel/sys_parisc.c linux-2.6.39.3/arch/pa
if (filp) {
addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
-diff -urNp linux-2.6.39.3/arch/parisc/kernel/traps.c linux-2.6.39.3/arch/parisc/kernel/traps.c
---- linux-2.6.39.3/arch/parisc/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/kernel/traps.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/kernel/traps.c linux-2.6.39.4/arch/parisc/kernel/traps.c
+--- linux-2.6.39.4/arch/parisc/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/kernel/traps.c 2011-08-05 19:44:33.000000000 -0400
@@ -733,9 +733,7 @@ void notrace handle_interruption(int cod
down_read(&current->mm->mmap_sem);
@@ -3245,9 +1460,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/kernel/traps.c linux-2.6.39.3/arch/parisc/
fault_address = regs->iaoq[0];
fault_space = regs->iasq[0];
-diff -urNp linux-2.6.39.3/arch/parisc/mm/fault.c linux-2.6.39.3/arch/parisc/mm/fault.c
---- linux-2.6.39.3/arch/parisc/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/parisc/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/parisc/mm/fault.c linux-2.6.39.4/arch/parisc/mm/fault.c
+--- linux-2.6.39.4/arch/parisc/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/parisc/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -15,6 +15,7 @@
#include <linux/sched.h>
#include <linux/interrupt.h>
@@ -3417,86 +1632,9 @@ diff -urNp linux-2.6.39.3/arch/parisc/mm/fault.c linux-2.6.39.3/arch/parisc/mm/f
/*
* If for any reason at all we couldn't handle the fault, make
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/device.h linux-2.6.39.3/arch/powerpc/include/asm/device.h
---- linux-2.6.39.3/arch/powerpc/include/asm/device.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/device.h 2011-05-22 19:36:30.000000000 -0400
-@@ -17,7 +17,7 @@ struct device_node;
- */
- struct dev_archdata {
- /* DMA operations on that device */
-- struct dma_map_ops *dma_ops;
-+ const struct dma_map_ops *dma_ops;
-
- /*
- * When an iommu is in use, dma_data is used as a ptr to the base of the
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/dma-mapping.h linux-2.6.39.3/arch/powerpc/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/powerpc/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -67,12 +67,13 @@ static inline unsigned long device_to_ma
- /*
- * Available generic sets of operations
- */
-+/* cannot be const */
- #ifdef CONFIG_PPC64
--extern struct dma_map_ops dma_iommu_ops;
-+extern const struct dma_map_ops dma_iommu_ops;
- #endif
--extern struct dma_map_ops dma_direct_ops;
-+extern const struct dma_map_ops dma_direct_ops;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- /* We don't handle the NULL dev case for ISA for now. We could
- * do it via an out of line call but it is not needed for now. The
-@@ -85,7 +86,7 @@ static inline struct dma_map_ops *get_dm
- return dev->archdata.dma_ops;
- }
-
--static inline void set_dma_ops(struct device *dev, struct dma_map_ops *ops)
-+static inline void set_dma_ops(struct device *dev, const struct dma_map_ops *ops)
- {
- dev->archdata.dma_ops = ops;
- }
-@@ -119,7 +120,7 @@ static inline void set_dma_offset(struct
-
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *dma_ops = get_dma_ops(dev);
-+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
-
- if (unlikely(dma_ops == NULL))
- return 0;
-@@ -133,7 +134,7 @@ extern int dma_set_mask(struct device *d
- static inline void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *dma_handle, gfp_t flag)
- {
-- struct dma_map_ops *dma_ops = get_dma_ops(dev);
-+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
- void *cpu_addr;
-
- BUG_ON(!dma_ops);
-@@ -148,7 +149,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *cpu_addr, dma_addr_t dma_handle)
- {
-- struct dma_map_ops *dma_ops = get_dma_ops(dev);
-+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
-
- BUG_ON(!dma_ops);
-
-@@ -159,7 +160,7 @@ static inline void dma_free_coherent(str
-
- static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
- {
-- struct dma_map_ops *dma_ops = get_dma_ops(dev);
-+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
-
- if (dma_ops->mapping_error)
- return dma_ops->mapping_error(dev, dma_addr);
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/elf.h linux-2.6.39.3/arch/powerpc/include/asm/elf.h
---- linux-2.6.39.3/arch/powerpc/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/elf.h linux-2.6.39.4/arch/powerpc/include/asm/elf.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -178,8 +178,19 @@ typedef elf_fpreg_t elf_vsrreghalf_t32[E
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
@@ -3529,22 +1667,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/elf.h linux-2.6.39.3/arch/pow
#endif /* __KERNEL__ */
/*
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/iommu.h linux-2.6.39.3/arch/powerpc/include/asm/iommu.h
---- linux-2.6.39.3/arch/powerpc/include/asm/iommu.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/iommu.h 2011-05-22 19:36:30.000000000 -0400
-@@ -116,6 +116,9 @@ extern void iommu_init_early_iSeries(voi
- extern void iommu_init_early_dart(void);
- extern void iommu_init_early_pasemi(void);
-
-+/* dma-iommu.c */
-+extern int dma_iommu_dma_supported(struct device *dev, u64 mask);
-+
- #ifdef CONFIG_PCI
- extern void pci_iommu_init(void);
- extern void pci_direct_iommu_init(void);
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/kmap_types.h linux-2.6.39.3/arch/powerpc/include/asm/kmap_types.h
---- linux-2.6.39.3/arch/powerpc/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/kmap_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/kmap_types.h linux-2.6.39.4/arch/powerpc/include/asm/kmap_types.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/kmap_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -27,6 +27,7 @@ enum km_type {
KM_PPC_SYNC_PAGE,
KM_PPC_SYNC_ICACHE,
@@ -3553,9 +1678,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/kmap_types.h linux-2.6.39.3/a
KM_TYPE_NR
};
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/page_64.h linux-2.6.39.3/arch/powerpc/include/asm/page_64.h
---- linux-2.6.39.3/arch/powerpc/include/asm/page_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/page_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/page_64.h linux-2.6.39.4/arch/powerpc/include/asm/page_64.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/page_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/page_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -172,15 +172,18 @@ do { \
* stack by default, so in the absence of a PT_GNU_STACK program header
* we turn execute permission off.
@@ -3577,9 +1702,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/page_64.h linux-2.6.39.3/arch
#include <asm-generic/getorder.h>
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/page.h linux-2.6.39.3/arch/powerpc/include/asm/page.h
---- linux-2.6.39.3/arch/powerpc/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/page.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/page.h linux-2.6.39.4/arch/powerpc/include/asm/page.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/page.h 2011-08-05 19:44:33.000000000 -0400
@@ -129,8 +129,9 @@ extern phys_addr_t kernstart_addr;
* and needs to be executable. This means the whole heap ends
* up being executable.
@@ -3602,23 +1727,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/page.h linux-2.6.39.3/arch/po
#ifndef __ASSEMBLY__
#undef STRICT_MM_TYPECHECKS
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/pci.h linux-2.6.39.3/arch/powerpc/include/asm/pci.h
---- linux-2.6.39.3/arch/powerpc/include/asm/pci.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/pci.h 2011-05-22 19:36:30.000000000 -0400
-@@ -65,8 +65,8 @@ static inline int pci_get_legacy_ide_irq
- }
-
- #ifdef CONFIG_PCI
--extern void set_pci_dma_ops(struct dma_map_ops *dma_ops);
--extern struct dma_map_ops *get_pci_dma_ops(void);
-+extern void set_pci_dma_ops(const struct dma_map_ops *dma_ops);
-+extern const struct dma_map_ops *get_pci_dma_ops(void);
- #else /* CONFIG_PCI */
- #define set_pci_dma_ops(d)
- #define get_pci_dma_ops() NULL
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/pgtable.h linux-2.6.39.3/arch/powerpc/include/asm/pgtable.h
---- linux-2.6.39.3/arch/powerpc/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/pgtable.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/pgtable.h linux-2.6.39.4/arch/powerpc/include/asm/pgtable.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/pgtable.h 2011-08-05 19:44:33.000000000 -0400
@@ -2,6 +2,7 @@
#define _ASM_POWERPC_PGTABLE_H
#ifdef __KERNEL__
@@ -3627,9 +1738,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/pgtable.h linux-2.6.39.3/arch
#ifndef __ASSEMBLY__
#include <asm/processor.h> /* For TASK_SIZE */
#include <asm/mmu.h>
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/pte-hash32.h linux-2.6.39.3/arch/powerpc/include/asm/pte-hash32.h
---- linux-2.6.39.3/arch/powerpc/include/asm/pte-hash32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/pte-hash32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/pte-hash32.h linux-2.6.39.4/arch/powerpc/include/asm/pte-hash32.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/pte-hash32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/pte-hash32.h 2011-08-05 19:44:33.000000000 -0400
@@ -21,6 +21,7 @@
#define _PAGE_FILE 0x004 /* when !present: nonlinear file mapping */
#define _PAGE_USER 0x004 /* usermode access allowed */
@@ -3638,9 +1749,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/pte-hash32.h linux-2.6.39.3/a
#define _PAGE_COHERENT 0x010 /* M: enforce memory coherence (SMP systems) */
#define _PAGE_NO_CACHE 0x020 /* I: cache inhibit */
#define _PAGE_WRITETHRU 0x040 /* W: cache write-through */
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/reg.h linux-2.6.39.3/arch/powerpc/include/asm/reg.h
---- linux-2.6.39.3/arch/powerpc/include/asm/reg.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/reg.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/reg.h linux-2.6.39.4/arch/powerpc/include/asm/reg.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/reg.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/reg.h 2011-08-05 19:44:33.000000000 -0400
@@ -201,6 +201,7 @@
#define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */
#define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */
@@ -3649,21 +1760,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/reg.h linux-2.6.39.3/arch/pow
#define DSISR_PROTFAULT 0x08000000 /* protection fault */
#define DSISR_ISSTORE 0x02000000 /* access was a store */
#define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/swiotlb.h linux-2.6.39.3/arch/powerpc/include/asm/swiotlb.h
---- linux-2.6.39.3/arch/powerpc/include/asm/swiotlb.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/swiotlb.h 2011-05-22 19:36:30.000000000 -0400
-@@ -13,7 +13,7 @@
-
- #include <linux/swiotlb.h>
-
--extern struct dma_map_ops swiotlb_dma_ops;
-+extern const struct dma_map_ops swiotlb_dma_ops;
-
- static inline void dma_mark_clean(void *addr, size_t size) {}
-
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/system.h linux-2.6.39.3/arch/powerpc/include/asm/system.h
---- linux-2.6.39.3/arch/powerpc/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/system.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/system.h linux-2.6.39.4/arch/powerpc/include/asm/system.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/system.h 2011-08-05 19:44:33.000000000 -0400
@@ -533,7 +533,7 @@ __cmpxchg_local(volatile void *ptr, unsi
#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
#endif
@@ -3673,9 +1772,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/system.h linux-2.6.39.3/arch/
/* Used in very early kernel initialization. */
extern unsigned long reloc_offset(void);
-diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/uaccess.h linux-2.6.39.3/arch/powerpc/include/asm/uaccess.h
---- linux-2.6.39.3/arch/powerpc/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/include/asm/uaccess.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/include/asm/uaccess.h linux-2.6.39.4/arch/powerpc/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/powerpc/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -13,6 +13,8 @@
#define VERIFY_READ 0
#define VERIFY_WRITE 1
@@ -3853,63 +1952,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/include/asm/uaccess.h linux-2.6.39.3/arch
extern unsigned long __clear_user(void __user *addr, unsigned long size);
static inline unsigned long clear_user(void __user *addr, unsigned long size)
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/dma.c linux-2.6.39.3/arch/powerpc/kernel/dma.c
---- linux-2.6.39.3/arch/powerpc/kernel/dma.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/dma.c 2011-05-22 19:36:30.000000000 -0400
-@@ -136,7 +136,7 @@ static inline void dma_direct_sync_singl
- }
- #endif
-
--struct dma_map_ops dma_direct_ops = {
-+const struct dma_map_ops dma_direct_ops = {
- .alloc_coherent = dma_direct_alloc_coherent,
- .free_coherent = dma_direct_free_coherent,
- .map_sg = dma_direct_map_sg,
-@@ -157,7 +157,7 @@ EXPORT_SYMBOL(dma_direct_ops);
-
- int dma_set_mask(struct device *dev, u64 dma_mask)
- {
-- struct dma_map_ops *dma_ops = get_dma_ops(dev);
-+ const struct dma_map_ops *dma_ops = get_dma_ops(dev);
-
- if (ppc_md.dma_set_mask)
- return ppc_md.dma_set_mask(dev, dma_mask);
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/dma-iommu.c linux-2.6.39.3/arch/powerpc/kernel/dma-iommu.c
---- linux-2.6.39.3/arch/powerpc/kernel/dma-iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/dma-iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -70,7 +70,7 @@ static void dma_iommu_unmap_sg(struct de
- }
-
- /* We support DMA to/from any memory page via the iommu */
--static int dma_iommu_dma_supported(struct device *dev, u64 mask)
-+int dma_iommu_dma_supported(struct device *dev, u64 mask)
- {
- struct iommu_table *tbl = get_iommu_table_base(dev);
-
-@@ -90,7 +90,7 @@ static int dma_iommu_dma_supported(struc
- return 1;
- }
-
--struct dma_map_ops dma_iommu_ops = {
-+struct dma_map_ops dma_iommu_ops = { /* cannot be const, see arch/powerpc/platforms/cell/iommu.c */
- .alloc_coherent = dma_iommu_alloc_coherent,
- .free_coherent = dma_iommu_free_coherent,
- .map_sg = dma_iommu_map_sg,
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/dma-swiotlb.c linux-2.6.39.3/arch/powerpc/kernel/dma-swiotlb.c
---- linux-2.6.39.3/arch/powerpc/kernel/dma-swiotlb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/dma-swiotlb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -31,7 +31,7 @@ unsigned int ppc_swiotlb_enable;
- * map_page, and unmap_page on highmem, use normal dma_ops
- * for everything else.
- */
--struct dma_map_ops swiotlb_dma_ops = {
-+const struct dma_map_ops swiotlb_dma_ops = {
- .alloc_coherent = dma_direct_alloc_coherent,
- .free_coherent = dma_direct_free_coherent,
- .map_sg = swiotlb_map_sg_attrs,
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/exceptions-64e.S linux-2.6.39.3/arch/powerpc/kernel/exceptions-64e.S
---- linux-2.6.39.3/arch/powerpc/kernel/exceptions-64e.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/exceptions-64e.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/exceptions-64e.S linux-2.6.39.4/arch/powerpc/kernel/exceptions-64e.S
+--- linux-2.6.39.4/arch/powerpc/kernel/exceptions-64e.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/exceptions-64e.S 2011-08-05 19:44:33.000000000 -0400
@@ -495,6 +495,7 @@ storage_fault_common:
std r14,_DAR(r1)
std r15,_DSISR(r1)
@@ -3928,9 +1973,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/exceptions-64e.S linux-2.6.39.3/ar
addi r3,r1,STACK_FRAME_OVERHEAD
ld r4,_DAR(r1)
bl .bad_page_fault
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/exceptions-64s.S linux-2.6.39.3/arch/powerpc/kernel/exceptions-64s.S
---- linux-2.6.39.3/arch/powerpc/kernel/exceptions-64s.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/exceptions-64s.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/exceptions-64s.S linux-2.6.39.4/arch/powerpc/kernel/exceptions-64s.S
+--- linux-2.6.39.4/arch/powerpc/kernel/exceptions-64s.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/exceptions-64s.S 2011-08-05 19:44:33.000000000 -0400
@@ -848,10 +848,10 @@ handle_page_fault:
11: ld r4,_DAR(r1)
ld r5,_DSISR(r1)
@@ -3943,33 +1988,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/exceptions-64s.S linux-2.6.39.3/ar
mr r5,r3
addi r3,r1,STACK_FRAME_OVERHEAD
lwz r4,_DAR(r1)
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/ibmebus.c linux-2.6.39.3/arch/powerpc/kernel/ibmebus.c
---- linux-2.6.39.3/arch/powerpc/kernel/ibmebus.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/ibmebus.c 2011-05-22 19:36:30.000000000 -0400
-@@ -128,7 +128,7 @@ static int ibmebus_dma_supported(struct
- return 1;
- }
-
--static struct dma_map_ops ibmebus_dma_ops = {
-+static const struct dma_map_ops ibmebus_dma_ops = {
- .alloc_coherent = ibmebus_alloc_coherent,
- .free_coherent = ibmebus_free_coherent,
- .map_sg = ibmebus_map_sg,
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/kgdb.c linux-2.6.39.3/arch/powerpc/kernel/kgdb.c
---- linux-2.6.39.3/arch/powerpc/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -422,7 +422,7 @@ int kgdb_arch_handle_exception(int vecto
- /*
- * Global data
- */
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- .gdb_bpt_instr = {0x7d, 0x82, 0x10, 0x08},
- };
-
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/module_32.c linux-2.6.39.3/arch/powerpc/kernel/module_32.c
---- linux-2.6.39.3/arch/powerpc/kernel/module_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/module_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/module_32.c linux-2.6.39.4/arch/powerpc/kernel/module_32.c
+--- linux-2.6.39.4/arch/powerpc/kernel/module_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/module_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -162,7 +162,7 @@ int module_frob_arch_sections(Elf32_Ehdr
me->arch.core_plt_section = i;
}
@@ -3999,9 +2020,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/module_32.c linux-2.6.39.3/arch/po
/* Find this entry, or if that fails, the next avail. entry */
while (entry->jump[0]) {
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/module.c linux-2.6.39.3/arch/powerpc/kernel/module.c
---- linux-2.6.39.3/arch/powerpc/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/module.c linux-2.6.39.4/arch/powerpc/kernel/module.c
+--- linux-2.6.39.4/arch/powerpc/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -31,11 +31,24 @@
LIST_HEAD(module_bug_list);
@@ -4041,39 +2062,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/module.c linux-2.6.39.3/arch/power
static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
const Elf_Shdr *sechdrs,
const char *name)
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/pci-common.c linux-2.6.39.3/arch/powerpc/kernel/pci-common.c
---- linux-2.6.39.3/arch/powerpc/kernel/pci-common.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/pci-common.c 2011-05-22 19:36:30.000000000 -0400
-@@ -53,14 +53,14 @@ resource_size_t isa_mem_base;
- unsigned int ppc_pci_flags = 0;
-
-
--static struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
-+static const struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
-
--void set_pci_dma_ops(struct dma_map_ops *dma_ops)
-+void set_pci_dma_ops(const struct dma_map_ops *dma_ops)
- {
- pci_dma_ops = dma_ops;
- }
-
--struct dma_map_ops *get_pci_dma_ops(void)
-+const struct dma_map_ops *get_pci_dma_ops(void)
- {
- return pci_dma_ops;
- }
-@@ -1639,7 +1639,7 @@ null_write_config(struct pci_bus *bus, u
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
--static struct pci_ops null_pci_ops =
-+static const struct pci_ops null_pci_ops =
- {
- .read = null_read_config,
- .write = null_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/process.c linux-2.6.39.3/arch/powerpc/kernel/process.c
---- linux-2.6.39.3/arch/powerpc/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/process.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/process.c linux-2.6.39.4/arch/powerpc/kernel/process.c
+--- linux-2.6.39.4/arch/powerpc/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -655,8 +655,8 @@ void show_regs(struct pt_regs * regs)
* Lookup NIP late so we have the best change of getting the
* above info out without failing
@@ -4166,21 +2157,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/process.c linux-2.6.39.3/arch/powe
-
- return ret;
-}
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/rtas_pci.c linux-2.6.39.3/arch/powerpc/kernel/rtas_pci.c
---- linux-2.6.39.3/arch/powerpc/kernel/rtas_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/rtas_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -149,7 +149,7 @@ static int rtas_pci_write_config(struct
- return PCIBIOS_DEVICE_NOT_FOUND;
- }
-
--static struct pci_ops rtas_pci_ops = {
-+static const struct pci_ops rtas_pci_ops = {
- .read = rtas_pci_read_config,
- .write = rtas_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/signal_32.c linux-2.6.39.3/arch/powerpc/kernel/signal_32.c
---- linux-2.6.39.3/arch/powerpc/kernel/signal_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/signal_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/signal_32.c linux-2.6.39.4/arch/powerpc/kernel/signal_32.c
+--- linux-2.6.39.4/arch/powerpc/kernel/signal_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/signal_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -858,7 +858,7 @@ int handle_rt_signal32(unsigned long sig
/* Save user registers on the stack */
frame = &rt_sf->uc.uc_mcontext;
@@ -4190,9 +2169,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/signal_32.c linux-2.6.39.3/arch/po
if (save_user_regs(regs, frame, 0, 1))
goto badframe;
regs->link = current->mm->context.vdso_base + vdso32_rt_sigtramp;
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/signal_64.c linux-2.6.39.3/arch/powerpc/kernel/signal_64.c
---- linux-2.6.39.3/arch/powerpc/kernel/signal_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/signal_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/signal_64.c linux-2.6.39.4/arch/powerpc/kernel/signal_64.c
+--- linux-2.6.39.4/arch/powerpc/kernel/signal_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/signal_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -429,7 +429,7 @@ int handle_rt_signal64(int signr, struct
current->thread.fpscr.val = 0;
@@ -4202,9 +2181,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/signal_64.c linux-2.6.39.3/arch/po
regs->link = current->mm->context.vdso_base + vdso64_rt_sigtramp;
} else {
err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]);
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/traps.c linux-2.6.39.3/arch/powerpc/kernel/traps.c
---- linux-2.6.39.3/arch/powerpc/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/traps.c 2011-06-13 21:33:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/traps.c linux-2.6.39.4/arch/powerpc/kernel/traps.c
+--- linux-2.6.39.4/arch/powerpc/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/traps.c 2011-08-05 19:44:33.000000000 -0400
@@ -96,6 +96,8 @@ static void pmac_backlight_unblank(void)
static inline void pmac_backlight_unblank(void) { }
#endif
@@ -4223,9 +2202,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/traps.c linux-2.6.39.3/arch/powerp
oops_exit();
do_exit(err);
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/vdso.c linux-2.6.39.3/arch/powerpc/kernel/vdso.c
---- linux-2.6.39.3/arch/powerpc/kernel/vdso.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/vdso.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/kernel/vdso.c linux-2.6.39.4/arch/powerpc/kernel/vdso.c
+--- linux-2.6.39.4/arch/powerpc/kernel/vdso.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/kernel/vdso.c 2011-08-05 19:44:33.000000000 -0400
@@ -36,6 +36,7 @@
#include <asm/firmware.h>
#include <asm/vdso.h>
@@ -4252,26 +2231,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/kernel/vdso.c linux-2.6.39.3/arch/powerpc
if (IS_ERR_VALUE(vdso_base)) {
rc = vdso_base;
goto fail_mmapsem;
-diff -urNp linux-2.6.39.3/arch/powerpc/kernel/vio.c linux-2.6.39.3/arch/powerpc/kernel/vio.c
---- linux-2.6.39.3/arch/powerpc/kernel/vio.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/kernel/vio.c 2011-05-22 19:36:30.000000000 -0400
-@@ -605,11 +605,12 @@ static int vio_dma_iommu_dma_supported(s
- return dma_iommu_ops.dma_supported(dev, mask);
- }
-
--struct dma_map_ops vio_dma_mapping_ops = {
-+const struct dma_map_ops vio_dma_mapping_ops = {
- .alloc_coherent = vio_dma_iommu_alloc_coherent,
- .free_coherent = vio_dma_iommu_free_coherent,
- .map_sg = vio_dma_iommu_map_sg,
- .unmap_sg = vio_dma_iommu_unmap_sg,
-+ .dma_supported = dma_iommu_dma_supported,
- .map_page = vio_dma_iommu_map_page,
- .unmap_page = vio_dma_iommu_unmap_page,
- .dma_supported = vio_dma_iommu_dma_supported,
-diff -urNp linux-2.6.39.3/arch/powerpc/lib/usercopy_64.c linux-2.6.39.3/arch/powerpc/lib/usercopy_64.c
---- linux-2.6.39.3/arch/powerpc/lib/usercopy_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/lib/usercopy_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/lib/usercopy_64.c linux-2.6.39.4/arch/powerpc/lib/usercopy_64.c
+--- linux-2.6.39.4/arch/powerpc/lib/usercopy_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/lib/usercopy_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -9,22 +9,6 @@
#include <linux/module.h>
#include <asm/uaccess.h>
@@ -4303,9 +2265,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/lib/usercopy_64.c linux-2.6.39.3/arch/pow
-EXPORT_SYMBOL(copy_to_user);
EXPORT_SYMBOL(copy_in_user);
-diff -urNp linux-2.6.39.3/arch/powerpc/mm/fault.c linux-2.6.39.3/arch/powerpc/mm/fault.c
---- linux-2.6.39.3/arch/powerpc/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/mm/fault.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/mm/fault.c linux-2.6.39.4/arch/powerpc/mm/fault.c
+--- linux-2.6.39.4/arch/powerpc/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/mm/fault.c 2011-08-05 19:44:33.000000000 -0400
@@ -31,6 +31,10 @@
#include <linux/kdebug.h>
#include <linux/perf_event.h>
@@ -4410,9 +2372,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/mm/fault.c linux-2.6.39.3/arch/powerpc/mm
_exception(SIGSEGV, regs, code, address);
return 0;
}
-diff -urNp linux-2.6.39.3/arch/powerpc/mm/mmap_64.c linux-2.6.39.3/arch/powerpc/mm/mmap_64.c
---- linux-2.6.39.3/arch/powerpc/mm/mmap_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/mm/mmap_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/mm/mmap_64.c linux-2.6.39.4/arch/powerpc/mm/mmap_64.c
+--- linux-2.6.39.4/arch/powerpc/mm/mmap_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/mm/mmap_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -99,10 +99,22 @@ void arch_pick_mmap_layout(struct mm_str
*/
if (mmap_is_legacy()) {
@@ -4436,9 +2398,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/mm/mmap_64.c linux-2.6.39.3/arch/powerpc/
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
-diff -urNp linux-2.6.39.3/arch/powerpc/mm/slice.c linux-2.6.39.3/arch/powerpc/mm/slice.c
---- linux-2.6.39.3/arch/powerpc/mm/slice.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/mm/slice.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/powerpc/mm/slice.c linux-2.6.39.4/arch/powerpc/mm/slice.c
+--- linux-2.6.39.4/arch/powerpc/mm/slice.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/powerpc/mm/slice.c 2011-08-05 19:44:33.000000000 -0400
@@ -98,7 +98,7 @@ static int slice_area_is_free(struct mm_
if ((mm->task_size - len) < addr)
return 0;
@@ -4505,234 +2467,9 @@ diff -urNp linux-2.6.39.3/arch/powerpc/mm/slice.c linux-2.6.39.3/arch/powerpc/mm
/* If hint, make sure it matches our alignment restrictions */
if (!fixed && addr) {
addr = _ALIGN_UP(addr, 1ul << pshift);
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/52xx/efika.c linux-2.6.39.3/arch/powerpc/platforms/52xx/efika.c
---- linux-2.6.39.3/arch/powerpc/platforms/52xx/efika.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/52xx/efika.c 2011-05-22 19:36:30.000000000 -0400
-@@ -60,7 +60,7 @@ static int rtas_write_config(struct pci_
- return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops rtas_pci_ops = {
-+static const struct pci_ops rtas_pci_ops = {
- .read = rtas_read_config,
- .write = rtas_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_pci.c linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -234,7 +234,7 @@ static int celleb_fake_pci_write_config(
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops celleb_fake_pci_ops = {
-+static const struct pci_ops celleb_fake_pci_ops = {
- .read = celleb_fake_pci_read_config,
- .write = celleb_fake_pci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_epci.c linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_epci.c
---- linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_epci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_epci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -245,7 +245,7 @@ static int celleb_epci_write_config(stru
- return celleb_epci_check_abort(hose, addr);
- }
-
--struct pci_ops celleb_epci_ops = {
-+const struct pci_ops celleb_epci_ops = {
- .read = celleb_epci_read_config,
- .write = celleb_epci_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_pciex.c linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_pciex.c
---- linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_pciex.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/cell/celleb_scc_pciex.c 2011-05-22 19:36:30.000000000 -0400
-@@ -399,7 +399,7 @@ static int scc_pciex_write_config(struct
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops scc_pciex_pci_ops = {
-+static const struct pci_ops scc_pciex_pci_ops = {
- scc_pciex_read_config,
- scc_pciex_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/cell/iommu.c linux-2.6.39.3/arch/powerpc/platforms/cell/iommu.c
---- linux-2.6.39.3/arch/powerpc/platforms/cell/iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/cell/iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -642,7 +642,7 @@ static int dma_fixed_dma_supported(struc
-
- static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask);
-
--struct dma_map_ops dma_iommu_fixed_ops = {
-+const struct dma_map_ops dma_iommu_fixed_ops = {
- .alloc_coherent = dma_fixed_alloc_coherent,
- .free_coherent = dma_fixed_free_coherent,
- .map_sg = dma_fixed_map_sg,
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/chrp/pci.c linux-2.6.39.3/arch/powerpc/platforms/chrp/pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/chrp/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/chrp/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -84,7 +84,7 @@ int gg2_write_config(struct pci_bus *bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops gg2_pci_ops =
-+static const struct pci_ops gg2_pci_ops =
- {
- .read = gg2_read_config,
- .write = gg2_write_config,
-@@ -122,7 +122,7 @@ int rtas_write_config(struct pci_bus *bu
- return rval? PCIBIOS_DEVICE_NOT_FOUND: PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops rtas_pci_ops =
-+static const struct pci_ops rtas_pci_ops =
- {
- .read = rtas_read_config,
- .write = rtas_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/iseries/pci.c linux-2.6.39.3/arch/powerpc/platforms/iseries/pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/iseries/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/iseries/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -533,7 +533,7 @@ static int iSeries_pci_write_config(stru
- return 0;
- }
-
--static struct pci_ops iSeries_pci_ops = {
-+static const struct pci_ops iSeries_pci_ops = {
- .read = iSeries_pci_read_config,
- .write = iSeries_pci_write_config
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/maple/pci.c linux-2.6.39.3/arch/powerpc/platforms/maple/pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/maple/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/maple/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -180,7 +180,7 @@ static int u3_agp_write_config(struct pc
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops u3_agp_pci_ops =
-+static const struct pci_ops u3_agp_pci_ops =
- {
- .read = u3_agp_read_config,
- .write = u3_agp_write_config,
-@@ -276,7 +276,7 @@ static int u3_ht_write_config(struct pci
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops u3_ht_pci_ops =
-+static const struct pci_ops u3_ht_pci_ops =
- {
- .read = u3_ht_read_config,
- .write = u3_ht_write_config,
-@@ -381,7 +381,7 @@ static int u4_pcie_write_config(struct p
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops u4_pcie_pci_ops =
-+static const struct pci_ops u4_pcie_pci_ops =
- {
- .read = u4_pcie_read_config,
- .write = u4_pcie_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/pasemi/pci.c linux-2.6.39.3/arch/powerpc/platforms/pasemi/pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/pasemi/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/pasemi/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -176,7 +176,7 @@ static int pa_pxp_write_config(struct pc
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops pa_pxp_ops = {
-+static const struct pci_ops pa_pxp_ops = {
- .read = pa_pxp_read_config,
- .write = pa_pxp_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/powermac/pci.c linux-2.6.39.3/arch/powerpc/platforms/powermac/pci.c
---- linux-2.6.39.3/arch/powerpc/platforms/powermac/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/powermac/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -218,7 +218,7 @@ static int macrisc_write_config(struct p
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops macrisc_pci_ops =
-+static const struct pci_ops macrisc_pci_ops =
- {
- .read = macrisc_read_config,
- .write = macrisc_write_config,
-@@ -273,7 +273,7 @@ chaos_write_config(struct pci_bus *bus,
- return macrisc_write_config(bus, devfn, offset, len, val);
- }
-
--static struct pci_ops chaos_pci_ops =
-+static const struct pci_ops chaos_pci_ops =
- {
- .read = chaos_read_config,
- .write = chaos_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/platforms/ps3/system-bus.c linux-2.6.39.3/arch/powerpc/platforms/ps3/system-bus.c
---- linux-2.6.39.3/arch/powerpc/platforms/ps3/system-bus.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/platforms/ps3/system-bus.c 2011-05-22 19:36:30.000000000 -0400
-@@ -695,7 +695,7 @@ static int ps3_dma_supported(struct devi
- return mask >= DMA_BIT_MASK(32);
- }
-
--static struct dma_map_ops ps3_sb_dma_ops = {
-+static const struct dma_map_ops ps3_sb_dma_ops = {
- .alloc_coherent = ps3_alloc_coherent,
- .free_coherent = ps3_free_coherent,
- .map_sg = ps3_sb_map_sg,
-@@ -705,7 +705,7 @@ static struct dma_map_ops ps3_sb_dma_ops
- .unmap_page = ps3_unmap_page,
- };
-
--static struct dma_map_ops ps3_ioc0_dma_ops = {
-+static const struct dma_map_ops ps3_ioc0_dma_ops = {
- .alloc_coherent = ps3_alloc_coherent,
- .free_coherent = ps3_free_coherent,
- .map_sg = ps3_ioc0_map_sg,
-diff -urNp linux-2.6.39.3/arch/powerpc/sysdev/fsl_pci.c linux-2.6.39.3/arch/powerpc/sysdev/fsl_pci.c
---- linux-2.6.39.3/arch/powerpc/sysdev/fsl_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/sysdev/fsl_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -573,7 +573,7 @@ static int mpc83xx_pcie_write_config(str
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops mpc83xx_pcie_ops = {
-+static const struct pci_ops mpc83xx_pcie_ops = {
- .read = mpc83xx_pcie_read_config,
- .write = mpc83xx_pcie_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/powerpc/sysdev/indirect_pci.c linux-2.6.39.3/arch/powerpc/sysdev/indirect_pci.c
---- linux-2.6.39.3/arch/powerpc/sysdev/indirect_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/sysdev/indirect_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -148,7 +148,7 @@ indirect_write_config(struct pci_bus *bu
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops indirect_pci_ops =
-+static const struct pci_ops indirect_pci_ops =
- {
- .read = indirect_read_config,
- .write = indirect_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/sysdev/ppc4xx_pci.c linux-2.6.39.3/arch/powerpc/sysdev/ppc4xx_pci.c
---- linux-2.6.39.3/arch/powerpc/sysdev/ppc4xx_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/sysdev/ppc4xx_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -1514,7 +1514,7 @@ static int ppc4xx_pciex_write_config(str
- return PCIBIOS_SUCCESSFUL;
- }
-
--static struct pci_ops ppc4xx_pciex_pci_ops =
-+static const struct pci_ops ppc4xx_pciex_pci_ops =
- {
- .read = ppc4xx_pciex_read_config,
- .write = ppc4xx_pciex_write_config,
-diff -urNp linux-2.6.39.3/arch/powerpc/sysdev/tsi108_pci.c linux-2.6.39.3/arch/powerpc/sysdev/tsi108_pci.c
---- linux-2.6.39.3/arch/powerpc/sysdev/tsi108_pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/powerpc/sysdev/tsi108_pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -190,7 +190,7 @@ void tsi108_clear_pci_cfg_error(void)
- tsi108_clear_pci_error(tsi108_pci_cfg_phys);
- }
-
--static struct pci_ops tsi108_direct_pci_ops = {
-+static const struct pci_ops tsi108_direct_pci_ops = {
- .read = tsi108_direct_read_config,
- .write = tsi108_direct_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/s390/include/asm/elf.h linux-2.6.39.3/arch/s390/include/asm/elf.h
---- linux-2.6.39.3/arch/s390/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/include/asm/elf.h linux-2.6.39.4/arch/s390/include/asm/elf.h
+--- linux-2.6.39.4/arch/s390/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -162,8 +162,14 @@ extern unsigned int vdso_enabled;
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
@@ -4758,9 +2495,9 @@ diff -urNp linux-2.6.39.3/arch/s390/include/asm/elf.h linux-2.6.39.3/arch/s390/i
-#define arch_randomize_brk arch_randomize_brk
-
#endif
-diff -urNp linux-2.6.39.3/arch/s390/include/asm/system.h linux-2.6.39.3/arch/s390/include/asm/system.h
---- linux-2.6.39.3/arch/s390/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/include/asm/system.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/include/asm/system.h linux-2.6.39.4/arch/s390/include/asm/system.h
+--- linux-2.6.39.4/arch/s390/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/include/asm/system.h 2011-08-05 19:44:33.000000000 -0400
@@ -255,7 +255,7 @@ extern void (*_machine_restart)(char *co
extern void (*_machine_halt)(void);
extern void (*_machine_power_off)(void);
@@ -4770,9 +2507,9 @@ diff -urNp linux-2.6.39.3/arch/s390/include/asm/system.h linux-2.6.39.3/arch/s39
static inline int tprot(unsigned long addr)
{
-diff -urNp linux-2.6.39.3/arch/s390/include/asm/uaccess.h linux-2.6.39.3/arch/s390/include/asm/uaccess.h
---- linux-2.6.39.3/arch/s390/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/include/asm/uaccess.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/include/asm/uaccess.h linux-2.6.39.4/arch/s390/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/s390/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -234,6 +234,10 @@ static inline unsigned long __must_check
copy_to_user(void __user *to, const void *from, unsigned long n)
{
@@ -4805,9 +2542,9 @@ diff -urNp linux-2.6.39.3/arch/s390/include/asm/uaccess.h linux-2.6.39.3/arch/s3
if (unlikely(sz != -1 && sz < n)) {
copy_from_user_overflow();
return n;
-diff -urNp linux-2.6.39.3/arch/s390/Kconfig linux-2.6.39.3/arch/s390/Kconfig
---- linux-2.6.39.3/arch/s390/Kconfig 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/Kconfig 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/Kconfig linux-2.6.39.4/arch/s390/Kconfig
+--- linux-2.6.39.4/arch/s390/Kconfig 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/Kconfig 2011-08-05 19:44:33.000000000 -0400
@@ -234,11 +234,9 @@ config S390_EXEC_PROTECT
prompt "Data execute protection"
help
@@ -4823,9 +2560,9 @@ diff -urNp linux-2.6.39.3/arch/s390/Kconfig linux-2.6.39.3/arch/s390/Kconfig
comment "Code generation options"
-diff -urNp linux-2.6.39.3/arch/s390/kernel/module.c linux-2.6.39.3/arch/s390/kernel/module.c
---- linux-2.6.39.3/arch/s390/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/kernel/module.c linux-2.6.39.4/arch/s390/kernel/module.c
+--- linux-2.6.39.4/arch/s390/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -168,11 +168,11 @@ module_frob_arch_sections(Elf_Ehdr *hdr,
/* Increase core size by size of got & plt and set start
@@ -4897,9 +2634,9 @@ diff -urNp linux-2.6.39.3/arch/s390/kernel/module.c linux-2.6.39.3/arch/s390/ker
rela->r_addend - loc;
if (r_type == R_390_GOTPC)
*(unsigned int *) loc = val;
-diff -urNp linux-2.6.39.3/arch/s390/kernel/process.c linux-2.6.39.3/arch/s390/kernel/process.c
---- linux-2.6.39.3/arch/s390/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/kernel/process.c linux-2.6.39.4/arch/s390/kernel/process.c
+--- linux-2.6.39.4/arch/s390/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -334,39 +334,3 @@ unsigned long get_wchan(struct task_stru
}
return 0;
@@ -4940,9 +2677,9 @@ diff -urNp linux-2.6.39.3/arch/s390/kernel/process.c linux-2.6.39.3/arch/s390/ke
- return base;
- return ret;
-}
-diff -urNp linux-2.6.39.3/arch/s390/kernel/setup.c linux-2.6.39.3/arch/s390/kernel/setup.c
---- linux-2.6.39.3/arch/s390/kernel/setup.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/kernel/setup.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/kernel/setup.c linux-2.6.39.4/arch/s390/kernel/setup.c
+--- linux-2.6.39.4/arch/s390/kernel/setup.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/kernel/setup.c 2011-08-05 19:44:33.000000000 -0400
@@ -271,7 +271,7 @@ static int __init early_parse_mem(char *
}
early_param("mem", early_parse_mem);
@@ -4991,21 +2728,9 @@ diff -urNp linux-2.6.39.3/arch/s390/kernel/setup.c linux-2.6.39.3/arch/s390/kern
static void setup_addressing_mode(void)
{
if (user_mode == SECONDARY_SPACE_MODE) {
-diff -urNp linux-2.6.39.3/arch/s390/mm/maccess.c linux-2.6.39.3/arch/s390/mm/maccess.c
---- linux-2.6.39.3/arch/s390/mm/maccess.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/mm/maccess.c 2011-05-22 19:36:30.000000000 -0400
-@@ -45,7 +45,7 @@ static long probe_kernel_write_odd(void
- return rc ? rc : count;
- }
-
--long probe_kernel_write(void *dst, void *src, size_t size)
-+long probe_kernel_write(void *dst, const void *src, size_t size)
- {
- long copied = 0;
-
-diff -urNp linux-2.6.39.3/arch/s390/mm/mmap.c linux-2.6.39.3/arch/s390/mm/mmap.c
---- linux-2.6.39.3/arch/s390/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/s390/mm/mmap.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/s390/mm/mmap.c linux-2.6.39.4/arch/s390/mm/mmap.c
+--- linux-2.6.39.4/arch/s390/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/s390/mm/mmap.c 2011-08-05 19:44:33.000000000 -0400
@@ -91,10 +91,22 @@ void arch_pick_mmap_layout(struct mm_str
*/
if (mmap_is_legacy()) {
@@ -5052,9 +2777,9 @@ diff -urNp linux-2.6.39.3/arch/s390/mm/mmap.c linux-2.6.39.3/arch/s390/mm/mmap.c
mm->get_unmapped_area = s390_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
-diff -urNp linux-2.6.39.3/arch/score/include/asm/system.h linux-2.6.39.3/arch/score/include/asm/system.h
---- linux-2.6.39.3/arch/score/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/score/include/asm/system.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/score/include/asm/system.h linux-2.6.39.4/arch/score/include/asm/system.h
+--- linux-2.6.39.4/arch/score/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/score/include/asm/system.h 2011-08-05 19:44:33.000000000 -0400
@@ -17,7 +17,7 @@ do { \
#define finish_arch_switch(prev) do {} while (0)
@@ -5064,9 +2789,9 @@ diff -urNp linux-2.6.39.3/arch/score/include/asm/system.h linux-2.6.39.3/arch/sc
#define mb() barrier()
#define rmb() barrier()
-diff -urNp linux-2.6.39.3/arch/score/kernel/process.c linux-2.6.39.3/arch/score/kernel/process.c
---- linux-2.6.39.3/arch/score/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/score/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/score/kernel/process.c linux-2.6.39.4/arch/score/kernel/process.c
+--- linux-2.6.39.4/arch/score/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/score/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -161,8 +161,3 @@ unsigned long get_wchan(struct task_stru
return task_pt_regs(task)->cp0_epc;
@@ -5076,189 +2801,9 @@ diff -urNp linux-2.6.39.3/arch/score/kernel/process.c linux-2.6.39.3/arch/score/
-{
- return sp;
-}
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/ops-dreamcast.c linux-2.6.39.3/arch/sh/drivers/pci/ops-dreamcast.c
---- linux-2.6.39.3/arch/sh/drivers/pci/ops-dreamcast.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/ops-dreamcast.c 2011-05-22 19:36:30.000000000 -0400
-@@ -76,7 +76,7 @@ static int gapspci_write(struct pci_bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops gapspci_pci_ops = {
-+const struct pci_ops gapspci_pci_ops = {
- .read = gapspci_read,
- .write = gapspci_write,
- };
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/ops-sh4.c linux-2.6.39.3/arch/sh/drivers/pci/ops-sh4.c
---- linux-2.6.39.3/arch/sh/drivers/pci/ops-sh4.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/ops-sh4.c 2011-05-22 19:36:30.000000000 -0400
-@@ -96,7 +96,7 @@ static int sh4_pci_write(struct pci_bus
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops sh4_pci_ops = {
-+const struct pci_ops sh4_pci_ops = {
- .read = sh4_pci_read,
- .write = sh4_pci_write,
- };
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/ops-sh5.c linux-2.6.39.3/arch/sh/drivers/pci/ops-sh5.c
---- linux-2.6.39.3/arch/sh/drivers/pci/ops-sh5.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/ops-sh5.c 2011-05-22 19:36:30.000000000 -0400
-@@ -62,7 +62,7 @@ static int sh5pci_write(struct pci_bus *
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops sh5_pci_ops = {
-+const struct pci_ops sh5_pci_ops = {
- .read = sh5pci_read,
- .write = sh5pci_write,
- };
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/ops-sh7786.c linux-2.6.39.3/arch/sh/drivers/pci/ops-sh7786.c
---- linux-2.6.39.3/arch/sh/drivers/pci/ops-sh7786.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/ops-sh7786.c 2011-05-22 19:36:30.000000000 -0400
-@@ -165,7 +165,7 @@ out:
- return ret;
- }
-
--struct pci_ops sh7786_pci_ops = {
-+const struct pci_ops sh7786_pci_ops = {
- .read = sh7786_pcie_read,
- .write = sh7786_pcie_write,
- };
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/pcie-sh7786.c linux-2.6.39.3/arch/sh/drivers/pci/pcie-sh7786.c
---- linux-2.6.39.3/arch/sh/drivers/pci/pcie-sh7786.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/pcie-sh7786.c 2011-05-22 19:36:30.000000000 -0400
-@@ -109,7 +109,7 @@ static struct resource sh7786_pci2_resou
- },
- };
-
--extern struct pci_ops sh7786_pci_ops;
-+extern const struct pci_ops sh7786_pci_ops;
-
- #define DEFINE_CONTROLLER(start, idx) \
- { \
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/pci-sh4.h linux-2.6.39.3/arch/sh/drivers/pci/pci-sh4.h
---- linux-2.6.39.3/arch/sh/drivers/pci/pci-sh4.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/pci-sh4.h 2011-05-22 19:36:30.000000000 -0400
-@@ -161,7 +161,7 @@
- #define SH4_PCIPDR 0x220 /* Port IO Data Register */
-
- /* arch/sh/kernel/drivers/pci/ops-sh4.c */
--extern struct pci_ops sh4_pci_ops;
-+extern const struct pci_ops sh4_pci_ops;
- int pci_fixup_pcic(struct pci_channel *chan);
-
- struct sh4_pci_address_space {
-diff -urNp linux-2.6.39.3/arch/sh/drivers/pci/pci-sh5.h linux-2.6.39.3/arch/sh/drivers/pci/pci-sh5.h
---- linux-2.6.39.3/arch/sh/drivers/pci/pci-sh5.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/drivers/pci/pci-sh5.h 2011-05-22 19:36:30.000000000 -0400
-@@ -105,6 +105,6 @@ extern unsigned long pcicr_virt;
- #define PCISH5_MEM_SIZCONV(x) (((x / 0x40000) - 1) << 18)
- #define PCISH5_IO_SIZCONV(x) (((x / 0x40000) - 1) << 18)
-
--extern struct pci_ops sh5_pci_ops;
-+extern const struct pci_ops sh5_pci_ops;
-
- #endif /* __PCI_SH5_H */
-diff -urNp linux-2.6.39.3/arch/sh/include/asm/dma-mapping.h linux-2.6.39.3/arch/sh/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/sh/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -1,10 +1,10 @@
- #ifndef __ASM_SH_DMA_MAPPING_H
- #define __ASM_SH_DMA_MAPPING_H
-
--extern struct dma_map_ops *dma_ops;
-+extern const struct dma_map_ops *dma_ops;
- extern void no_iommu_init(void);
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- return dma_ops;
- }
-@@ -14,7 +14,7 @@ static inline struct dma_map_ops *get_dm
-
- static inline int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (ops->dma_supported)
- return ops->dma_supported(dev, mask);
-@@ -24,7 +24,7 @@ static inline int dma_supported(struct d
-
- static inline int dma_set_mask(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (!dev->dma_mask || !dma_supported(dev, mask))
- return -EIO;
-@@ -44,7 +44,7 @@ void dma_cache_sync(struct device *dev,
-
- static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (ops->mapping_error)
- return ops->mapping_error(dev, dma_addr);
-@@ -55,7 +55,7 @@ static inline int dma_mapping_error(stru
- static inline void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *dma_handle, gfp_t gfp)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- void *memory;
-
- if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
-@@ -72,7 +72,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *vaddr, dma_addr_t dma_handle)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- if (dma_release_from_coherent(dev, get_order(size), vaddr))
- return;
-diff -urNp linux-2.6.39.3/arch/sh/kernel/dma-nommu.c linux-2.6.39.3/arch/sh/kernel/dma-nommu.c
---- linux-2.6.39.3/arch/sh/kernel/dma-nommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/kernel/dma-nommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -62,7 +62,7 @@ static void nommu_sync_sg(struct device
- }
- #endif
-
--struct dma_map_ops nommu_dma_ops = {
-+const struct dma_map_ops nommu_dma_ops = {
- .alloc_coherent = dma_generic_alloc_coherent,
- .free_coherent = dma_generic_free_coherent,
- .map_page = nommu_map_page,
-diff -urNp linux-2.6.39.3/arch/sh/kernel/kgdb.c linux-2.6.39.3/arch/sh/kernel/kgdb.c
---- linux-2.6.39.3/arch/sh/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -319,7 +319,7 @@ void kgdb_arch_exit(void)
- unregister_die_notifier(&kgdb_notifier);
- }
-
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- /* Breakpoint instruction: trapa #0x3c */
- #ifdef CONFIG_CPU_LITTLE_ENDIAN
- .gdb_bpt_instr = { 0x3c, 0xc3 },
-diff -urNp linux-2.6.39.3/arch/sh/mm/consistent.c linux-2.6.39.3/arch/sh/mm/consistent.c
---- linux-2.6.39.3/arch/sh/mm/consistent.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/mm/consistent.c 2011-05-22 19:36:30.000000000 -0400
-@@ -22,7 +22,7 @@
-
- #define PREALLOC_DMA_DEBUG_ENTRIES 4096
-
--struct dma_map_ops *dma_ops;
-+const struct dma_map_ops *dma_ops;
- EXPORT_SYMBOL(dma_ops);
-
- static int __init dma_init(void)
-diff -urNp linux-2.6.39.3/arch/sh/mm/mmap.c linux-2.6.39.3/arch/sh/mm/mmap.c
---- linux-2.6.39.3/arch/sh/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sh/mm/mmap.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sh/mm/mmap.c linux-2.6.39.4/arch/sh/mm/mmap.c
+--- linux-2.6.39.4/arch/sh/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sh/mm/mmap.c 2011-08-05 19:44:33.000000000 -0400
@@ -74,8 +74,7 @@ unsigned long arch_get_unmapped_area(str
addr = PAGE_ALIGN(addr);
@@ -5333,9 +2878,9 @@ diff -urNp linux-2.6.39.3/arch/sh/mm/mmap.c linux-2.6.39.3/arch/sh/mm/mmap.c
bottomup:
/*
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h
---- linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/atomic_64.h linux-2.6.39.4/arch/sparc/include/asm/atomic_64.h
+--- linux-2.6.39.4/arch/sparc/include/asm/atomic_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/atomic_64.h 2011-08-05 20:34:06.000000000 -0400
@@ -14,18 +14,40 @@
#define ATOMIC64_INIT(i) { (i) }
@@ -5377,7 +2922,7 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch
extern int atomic_sub_ret(int, atomic_t *);
extern long atomic64_sub_ret(long, atomic64_t *);
-@@ -33,12 +55,24 @@ extern long atomic64_sub_ret(long, atomi
+@@ -33,13 +55,29 @@ extern long atomic64_sub_ret(long, atomi
#define atomic64_dec_return(v) atomic64_sub_ret(1, v)
#define atomic_inc_return(v) atomic_add_ret(1, v)
@@ -5400,9 +2945,14 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch
+ return atomic_add_ret_unchecked(i, v);
+}
#define atomic64_add_return(i, v) atomic64_add_ret(i, v)
++static inline long atomic64_add_return_unchecked(long i, atomic64_unchecked_t *v)
++{
++ return atomic64_add_ret_unchecked(i, v);
++}
/*
-@@ -50,6 +84,7 @@ extern long atomic64_sub_ret(long, atomi
+ * atomic_inc_and_test - increment and test
+@@ -50,6 +88,7 @@ extern long atomic64_sub_ret(long, atomi
* other cases.
*/
#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
@@ -5410,7 +2960,7 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch
#define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
#define atomic_sub_and_test(i, v) (atomic_sub_ret(i, v) == 0)
-@@ -59,30 +94,59 @@ extern long atomic64_sub_ret(long, atomi
+@@ -59,30 +98,59 @@ extern long atomic64_sub_ret(long, atomi
#define atomic64_dec_and_test(v) (atomic64_sub_ret(1, v) == 0)
#define atomic_inc(v) atomic_add(1, v)
@@ -5474,7 +3024,7 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch
}
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
-@@ -93,17 +157,28 @@ static inline int atomic_add_unless(atom
+@@ -93,17 +161,28 @@ static inline int atomic_add_unless(atom
static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
{
@@ -5507,9 +3057,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/atomic_64.h linux-2.6.39.3/arch
}
#define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/cache.h linux-2.6.39.3/arch/sparc/include/asm/cache.h
---- linux-2.6.39.3/arch/sparc/include/asm/cache.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/cache.h 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/cache.h linux-2.6.39.4/arch/sparc/include/asm/cache.h
+--- linux-2.6.39.4/arch/sparc/include/asm/cache.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/cache.h 2011-08-05 19:44:33.000000000 -0400
@@ -10,7 +10,7 @@
#define ARCH_SLAB_MINALIGN __alignof__(unsigned long long)
@@ -5519,43 +3069,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/cache.h linux-2.6.39.3/arch/spa
#ifdef CONFIG_SPARC32
#define SMP_CACHE_BYTES_SHIFT 5
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/dma-mapping.h linux-2.6.39.3/arch/sparc/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/sparc/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -12,10 +12,10 @@ extern int dma_supported(struct device *
- #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
- #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
-
--extern struct dma_map_ops *dma_ops, pci32_dma_ops;
-+extern const struct dma_map_ops *dma_ops, pci32_dma_ops;
- extern struct bus_type pci_bus_type;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- #if defined(CONFIG_SPARC32) && defined(CONFIG_PCI)
- if (dev->bus == &pci_bus_type)
-@@ -29,7 +29,7 @@ static inline struct dma_map_ops *get_dm
- static inline void *dma_alloc_coherent(struct device *dev, size_t size,
- dma_addr_t *dma_handle, gfp_t flag)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- void *cpu_addr;
-
- cpu_addr = ops->alloc_coherent(dev, size, dma_handle, flag);
-@@ -40,7 +40,7 @@ static inline void *dma_alloc_coherent(s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *cpu_addr, dma_addr_t dma_handle)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);
- ops->free_coherent(dev, size, cpu_addr, dma_handle);
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/elf_32.h linux-2.6.39.3/arch/sparc/include/asm/elf_32.h
---- linux-2.6.39.3/arch/sparc/include/asm/elf_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/elf_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/elf_32.h linux-2.6.39.4/arch/sparc/include/asm/elf_32.h
+--- linux-2.6.39.4/arch/sparc/include/asm/elf_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/elf_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -114,6 +114,13 @@ typedef struct {
#define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE)
@@ -5570,9 +3086,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/elf_32.h linux-2.6.39.3/arch/sp
/* This yields a mask that user programs can use to figure out what
instruction set this cpu supports. This can NOT be done in userspace
on Sparc. */
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/elf_64.h linux-2.6.39.3/arch/sparc/include/asm/elf_64.h
---- linux-2.6.39.3/arch/sparc/include/asm/elf_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/elf_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/elf_64.h linux-2.6.39.4/arch/sparc/include/asm/elf_64.h
+--- linux-2.6.39.4/arch/sparc/include/asm/elf_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/elf_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -162,6 +162,12 @@ typedef struct {
#define ELF_ET_DYN_BASE 0x0000010000000000UL
#define COMPAT_ELF_ET_DYN_BASE 0x0000000070000000UL
@@ -5586,9 +3102,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/elf_64.h linux-2.6.39.3/arch/sp
/* This yields a mask that user programs can use to figure out what
instruction set this cpu supports. */
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/pgtable_32.h linux-2.6.39.3/arch/sparc/include/asm/pgtable_32.h
---- linux-2.6.39.3/arch/sparc/include/asm/pgtable_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/pgtable_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/pgtable_32.h linux-2.6.39.4/arch/sparc/include/asm/pgtable_32.h
+--- linux-2.6.39.4/arch/sparc/include/asm/pgtable_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/pgtable_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -43,6 +43,13 @@ BTFIXUPDEF_SIMM13(user_ptrs_per_pgd)
BTFIXUPDEF_INT(page_none)
BTFIXUPDEF_INT(page_copy)
@@ -5620,9 +3136,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/pgtable_32.h linux-2.6.39.3/arc
extern unsigned long page_kernel;
#ifdef MODULE
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.39.3/arch/sparc/include/asm/pgtsrmmu.h
---- linux-2.6.39.3/arch/sparc/include/asm/pgtsrmmu.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/pgtsrmmu.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.39.4/arch/sparc/include/asm/pgtsrmmu.h
+--- linux-2.6.39.4/arch/sparc/include/asm/pgtsrmmu.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/pgtsrmmu.h 2011-08-05 19:44:33.000000000 -0400
@@ -115,6 +115,13 @@
SRMMU_EXEC | SRMMU_REF)
#define SRMMU_PAGE_RDONLY __pgprot(SRMMU_VALID | SRMMU_CACHE | \
@@ -5637,9 +3153,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/pgtsrmmu.h linux-2.6.39.3/arch/
#define SRMMU_PAGE_KERNEL __pgprot(SRMMU_VALID | SRMMU_CACHE | SRMMU_PRIV | \
SRMMU_DIRTY | SRMMU_REF)
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/spinlock_64.h linux-2.6.39.3/arch/sparc/include/asm/spinlock_64.h
---- linux-2.6.39.3/arch/sparc/include/asm/spinlock_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/spinlock_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/spinlock_64.h linux-2.6.39.4/arch/sparc/include/asm/spinlock_64.h
+--- linux-2.6.39.4/arch/sparc/include/asm/spinlock_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/spinlock_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -92,14 +92,19 @@ static inline void arch_spin_lock_flags(
/* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */
@@ -5737,9 +3253,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/spinlock_64.h linux-2.6.39.3/ar
{
unsigned long mask, tmp1, tmp2, result;
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/thread_info_32.h linux-2.6.39.3/arch/sparc/include/asm/thread_info_32.h
---- linux-2.6.39.3/arch/sparc/include/asm/thread_info_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/thread_info_32.h 2011-06-03 01:14:03.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/thread_info_32.h linux-2.6.39.4/arch/sparc/include/asm/thread_info_32.h
+--- linux-2.6.39.4/arch/sparc/include/asm/thread_info_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/thread_info_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -50,6 +50,8 @@ struct thread_info {
unsigned long w_saved;
@@ -5749,9 +3265,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/thread_info_32.h linux-2.6.39.3
};
/*
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/thread_info_64.h linux-2.6.39.3/arch/sparc/include/asm/thread_info_64.h
---- linux-2.6.39.3/arch/sparc/include/asm/thread_info_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/thread_info_64.h 2011-06-03 01:14:21.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/thread_info_64.h linux-2.6.39.4/arch/sparc/include/asm/thread_info_64.h
+--- linux-2.6.39.4/arch/sparc/include/asm/thread_info_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/thread_info_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -63,6 +63,8 @@ struct thread_info {
struct pt_regs *kern_una_regs;
unsigned int kern_una_insn;
@@ -5761,9 +3277,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/thread_info_64.h linux-2.6.39.3
unsigned long fpregs[0] __attribute__ ((aligned(64)));
};
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess_32.h linux-2.6.39.3/arch/sparc/include/asm/uaccess_32.h
---- linux-2.6.39.3/arch/sparc/include/asm/uaccess_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/uaccess_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/uaccess_32.h linux-2.6.39.4/arch/sparc/include/asm/uaccess_32.h
+--- linux-2.6.39.4/arch/sparc/include/asm/uaccess_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/uaccess_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -249,27 +249,46 @@ extern unsigned long __copy_user(void __
static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
@@ -5815,9 +3331,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess_32.h linux-2.6.39.3/arc
return __copy_user((__force void __user *) to, from, n);
}
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess_64.h linux-2.6.39.3/arch/sparc/include/asm/uaccess_64.h
---- linux-2.6.39.3/arch/sparc/include/asm/uaccess_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/uaccess_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/uaccess_64.h linux-2.6.39.4/arch/sparc/include/asm/uaccess_64.h
+--- linux-2.6.39.4/arch/sparc/include/asm/uaccess_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/uaccess_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -10,6 +10,7 @@
#include <linux/compiler.h>
#include <linux/string.h>
@@ -5860,9 +3376,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess_64.h linux-2.6.39.3/arc
if (unlikely(ret))
ret = copy_to_user_fixup(to, from, size);
return ret;
-diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess.h linux-2.6.39.3/arch/sparc/include/asm/uaccess.h
---- linux-2.6.39.3/arch/sparc/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/include/asm/uaccess.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/include/asm/uaccess.h linux-2.6.39.4/arch/sparc/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/sparc/include/asm/uaccess.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -1,5 +1,13 @@
#ifndef ___ASM_SPARC_UACCESS_H
#define ___ASM_SPARC_UACCESS_H
@@ -5877,75 +3393,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/include/asm/uaccess.h linux-2.6.39.3/arch/s
#if defined(__sparc__) && defined(__arch64__)
#include <asm/uaccess_64.h>
#else
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/iommu.c linux-2.6.39.3/arch/sparc/kernel/iommu.c
---- linux-2.6.39.3/arch/sparc/kernel/iommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/iommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -824,7 +824,7 @@ static void dma_4u_sync_sg_for_cpu(struc
- spin_unlock_irqrestore(&iommu->lock, flags);
- }
-
--static struct dma_map_ops sun4u_dma_ops = {
-+static const struct dma_map_ops sun4u_dma_ops = {
- .alloc_coherent = dma_4u_alloc_coherent,
- .free_coherent = dma_4u_free_coherent,
- .map_page = dma_4u_map_page,
-@@ -835,7 +835,7 @@ static struct dma_map_ops sun4u_dma_ops
- .sync_sg_for_cpu = dma_4u_sync_sg_for_cpu,
- };
-
--struct dma_map_ops *dma_ops = &sun4u_dma_ops;
-+const struct dma_map_ops *dma_ops = &sun4u_dma_ops;
- EXPORT_SYMBOL(dma_ops);
-
- extern int pci64_dma_supported(struct pci_dev *pdev, u64 device_mask);
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/ioport.c linux-2.6.39.3/arch/sparc/kernel/ioport.c
---- linux-2.6.39.3/arch/sparc/kernel/ioport.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/ioport.c 2011-05-22 19:36:30.000000000 -0400
-@@ -402,7 +402,7 @@ static void sbus_sync_sg_for_device(stru
- BUG();
- }
-
--struct dma_map_ops sbus_dma_ops = {
-+const struct dma_map_ops sbus_dma_ops = {
- .alloc_coherent = sbus_alloc_coherent,
- .free_coherent = sbus_free_coherent,
- .map_page = sbus_map_page,
-@@ -653,7 +653,7 @@ static void pci32_sync_sg_for_device(str
- }
- }
-
--struct dma_map_ops pci32_dma_ops = {
-+const struct dma_map_ops pci32_dma_ops = {
- .alloc_coherent = pci32_alloc_coherent,
- .free_coherent = pci32_free_coherent,
- .map_page = pci32_map_page,
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/kgdb_32.c linux-2.6.39.3/arch/sparc/kernel/kgdb_32.c
---- linux-2.6.39.3/arch/sparc/kernel/kgdb_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/kgdb_32.c 2011-05-22 19:36:30.000000000 -0400
-@@ -164,7 +164,7 @@ void kgdb_arch_set_pc(struct pt_regs *re
- regs->npc = regs->pc + 4;
- }
-
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- /* Breakpoint instruction: ta 0x7d */
- .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x7d },
- };
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/kgdb_64.c linux-2.6.39.3/arch/sparc/kernel/kgdb_64.c
---- linux-2.6.39.3/arch/sparc/kernel/kgdb_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/kgdb_64.c 2011-05-22 19:36:30.000000000 -0400
-@@ -187,7 +187,7 @@ void kgdb_arch_set_pc(struct pt_regs *re
- regs->tnpc = regs->tpc + 4;
- }
-
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- /* Breakpoint instruction: ta 0x72 */
- .gdb_bpt_instr = { 0x91, 0xd0, 0x20, 0x72 },
- };
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/Makefile linux-2.6.39.3/arch/sparc/kernel/Makefile
---- linux-2.6.39.3/arch/sparc/kernel/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/Makefile 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/Makefile linux-2.6.39.4/arch/sparc/kernel/Makefile
+--- linux-2.6.39.4/arch/sparc/kernel/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/Makefile 2011-08-05 19:44:33.000000000 -0400
@@ -3,7 +3,7 @@
#
@@ -5955,68 +3405,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/Makefile linux-2.6.39.3/arch/sparc/k
extra-y := head_$(BITS).o
extra-y += init_task.o
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/pcic.c linux-2.6.39.3/arch/sparc/kernel/pcic.c
---- linux-2.6.39.3/arch/sparc/kernel/pcic.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/pcic.c 2011-05-22 19:36:30.000000000 -0400
-@@ -268,7 +268,7 @@ static int pcic_write_config(struct pci_
- return -EINVAL;
- }
-
--static struct pci_ops pcic_ops = {
-+static const struct pci_ops pcic_ops = {
- .read = pcic_read_config,
- .write = pcic_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/pci_common.c linux-2.6.39.3/arch/sparc/kernel/pci_common.c
---- linux-2.6.39.3/arch/sparc/kernel/pci_common.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/pci_common.c 2011-05-22 19:36:30.000000000 -0400
-@@ -249,7 +249,7 @@ static int sun4u_write_pci_cfg(struct pc
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops sun4u_pci_ops = {
-+const struct pci_ops sun4u_pci_ops = {
- .read = sun4u_read_pci_cfg,
- .write = sun4u_write_pci_cfg,
- };
-@@ -310,7 +310,7 @@ static int sun4v_write_pci_cfg(struct pc
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops sun4v_pci_ops = {
-+const struct pci_ops sun4v_pci_ops = {
- .read = sun4v_read_pci_cfg,
- .write = sun4v_write_pci_cfg,
- };
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/pci_impl.h linux-2.6.39.3/arch/sparc/kernel/pci_impl.h
---- linux-2.6.39.3/arch/sparc/kernel/pci_impl.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/pci_impl.h 2011-05-22 19:36:30.000000000 -0400
-@@ -175,8 +175,8 @@ extern void pci_config_write8(u8 *addr,
- extern void pci_config_write16(u16 *addr, u16 val);
- extern void pci_config_write32(u32 *addr, u32 val);
-
--extern struct pci_ops sun4u_pci_ops;
--extern struct pci_ops sun4v_pci_ops;
-+extern const struct pci_ops sun4u_pci_ops;
-+extern const struct pci_ops sun4v_pci_ops;
-
- extern volatile int pci_poke_in_progress;
- extern volatile int pci_poke_cpu;
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/pci_sun4v.c linux-2.6.39.3/arch/sparc/kernel/pci_sun4v.c
---- linux-2.6.39.3/arch/sparc/kernel/pci_sun4v.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/pci_sun4v.c 2011-05-22 19:36:30.000000000 -0400
-@@ -525,7 +525,7 @@ static void dma_4v_unmap_sg(struct devic
- spin_unlock_irqrestore(&iommu->lock, flags);
- }
-
--static struct dma_map_ops sun4v_dma_ops = {
-+static const struct dma_map_ops sun4v_dma_ops = {
- .alloc_coherent = dma_4v_alloc_coherent,
- .free_coherent = dma_4v_free_coherent,
- .map_page = dma_4v_map_page,
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/process_32.c linux-2.6.39.3/arch/sparc/kernel/process_32.c
---- linux-2.6.39.3/arch/sparc/kernel/process_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/process_32.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/process_32.c linux-2.6.39.4/arch/sparc/kernel/process_32.c
+--- linux-2.6.39.4/arch/sparc/kernel/process_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/process_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -196,7 +196,7 @@ void __show_backtrace(unsigned long fp)
rw->ins[4], rw->ins[5],
rw->ins[6],
@@ -6052,9 +3443,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/process_32.c linux-2.6.39.3/arch/spa
fp = rw->ins[6];
} while (++count < 16);
printk("\n");
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/process_64.c linux-2.6.39.3/arch/sparc/kernel/process_64.c
---- linux-2.6.39.3/arch/sparc/kernel/process_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/process_64.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/process_64.c linux-2.6.39.4/arch/sparc/kernel/process_64.c
+--- linux-2.6.39.4/arch/sparc/kernel/process_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/process_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -180,14 +180,14 @@ static void show_regwindow(struct pt_reg
printk("i4: %016lx i5: %016lx i6: %016lx i7: %016lx\n",
rwk->ins[4], rwk->ins[5], rwk->ins[6], rwk->ins[7]);
@@ -6090,9 +3481,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/process_64.c linux-2.6.39.3/arch/spa
(void *) gp->tpc,
(void *) gp->o7,
(void *) gp->i7,
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/sys_sparc_32.c linux-2.6.39.3/arch/sparc/kernel/sys_sparc_32.c
---- linux-2.6.39.3/arch/sparc/kernel/sys_sparc_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/sys_sparc_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/sys_sparc_32.c linux-2.6.39.4/arch/sparc/kernel/sys_sparc_32.c
+--- linux-2.6.39.4/arch/sparc/kernel/sys_sparc_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/sys_sparc_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(str
if (ARCH_SUN4C && len > 0x20000000)
return -ENOMEM;
@@ -6111,9 +3502,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/sys_sparc_32.c linux-2.6.39.3/arch/s
return addr;
addr = vmm->vm_end;
if (flags & MAP_SHARED)
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/sys_sparc_64.c linux-2.6.39.3/arch/sparc/kernel/sys_sparc_64.c
---- linux-2.6.39.3/arch/sparc/kernel/sys_sparc_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/sys_sparc_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/sys_sparc_64.c linux-2.6.39.4/arch/sparc/kernel/sys_sparc_64.c
+--- linux-2.6.39.4/arch/sparc/kernel/sys_sparc_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/sys_sparc_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -124,7 +124,7 @@ unsigned long arch_get_unmapped_area(str
/* We do not accept a shared mapping if it would violate
* cache aliasing constraints.
@@ -6261,9 +3652,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/sys_sparc_64.c linux-2.6.39.3/arch/s
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/traps_32.c linux-2.6.39.3/arch/sparc/kernel/traps_32.c
---- linux-2.6.39.3/arch/sparc/kernel/traps_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/traps_32.c 2011-06-13 21:29:23.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/traps_32.c linux-2.6.39.4/arch/sparc/kernel/traps_32.c
+--- linux-2.6.39.4/arch/sparc/kernel/traps_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/traps_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -44,6 +44,8 @@ static void instruction_dump(unsigned lo
#define __SAVE __asm__ __volatile__("save %sp, -0x40, %sp\n\t")
#define __RESTORE __asm__ __volatile__("restore %g0, %g0, %g0\n\t")
@@ -6293,9 +3684,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/traps_32.c linux-2.6.39.3/arch/sparc
do_exit(SIGSEGV);
}
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/traps_64.c linux-2.6.39.3/arch/sparc/kernel/traps_64.c
---- linux-2.6.39.3/arch/sparc/kernel/traps_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/traps_64.c 2011-06-13 21:28:54.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/traps_64.c linux-2.6.39.4/arch/sparc/kernel/traps_64.c
+--- linux-2.6.39.4/arch/sparc/kernel/traps_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/traps_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -75,7 +75,7 @@ static void dump_tl1_traplog(struct tl1_
i + 1,
p->trapstack[i].tstate, p->trapstack[i].tpc,
@@ -6433,9 +3824,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/traps_64.c linux-2.6.39.3/arch/sparc
do_exit(SIGSEGV);
}
EXPORT_SYMBOL(die_if_kernel);
-diff -urNp linux-2.6.39.3/arch/sparc/kernel/unaligned_64.c linux-2.6.39.3/arch/sparc/kernel/unaligned_64.c
---- linux-2.6.39.3/arch/sparc/kernel/unaligned_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/kernel/unaligned_64.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/kernel/unaligned_64.c linux-2.6.39.4/arch/sparc/kernel/unaligned_64.c
+--- linux-2.6.39.4/arch/sparc/kernel/unaligned_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/kernel/unaligned_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -278,7 +278,7 @@ static void log_unaligned(struct pt_regs
static DEFINE_RATELIMIT_STATE(ratelimit, 5 * HZ, 5);
@@ -6445,9 +3836,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/kernel/unaligned_64.c linux-2.6.39.3/arch/s
regs->tpc, (void *) regs->tpc);
}
}
-diff -urNp linux-2.6.39.3/arch/sparc/lib/atomic_64.S linux-2.6.39.3/arch/sparc/lib/atomic_64.S
---- linux-2.6.39.3/arch/sparc/lib/atomic_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/lib/atomic_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/lib/atomic_64.S linux-2.6.39.4/arch/sparc/lib/atomic_64.S
+--- linux-2.6.39.4/arch/sparc/lib/atomic_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/lib/atomic_64.S 2011-08-05 19:44:33.000000000 -0400
@@ -18,7 +18,12 @@
atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
BACKOFF_SETUP(%o2)
@@ -6682,9 +4073,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/lib/atomic_64.S linux-2.6.39.3/arch/sparc/l
casx [%o1], %g1, %g7
cmp %g1, %g7
bne,pn %xcc, BACKOFF_LABEL(2f, 1b)
-diff -urNp linux-2.6.39.3/arch/sparc/lib/ksyms.c linux-2.6.39.3/arch/sparc/lib/ksyms.c
---- linux-2.6.39.3/arch/sparc/lib/ksyms.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/lib/ksyms.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/lib/ksyms.c linux-2.6.39.4/arch/sparc/lib/ksyms.c
+--- linux-2.6.39.4/arch/sparc/lib/ksyms.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/lib/ksyms.c 2011-08-05 19:44:33.000000000 -0400
@@ -142,12 +142,17 @@ EXPORT_SYMBOL(__downgrade_write);
/* Atomic counter implementation. */
@@ -6703,9 +4094,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/lib/ksyms.c linux-2.6.39.3/arch/sparc/lib/k
EXPORT_SYMBOL(atomic64_sub_ret);
/* Atomic bit operations. */
-diff -urNp linux-2.6.39.3/arch/sparc/lib/Makefile linux-2.6.39.3/arch/sparc/lib/Makefile
---- linux-2.6.39.3/arch/sparc/lib/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/lib/Makefile 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/lib/Makefile linux-2.6.39.4/arch/sparc/lib/Makefile
+--- linux-2.6.39.4/arch/sparc/lib/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/lib/Makefile 2011-08-05 19:44:33.000000000 -0400
@@ -2,7 +2,7 @@
#
@@ -6715,9 +4106,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/lib/Makefile linux-2.6.39.3/arch/sparc/lib/
lib-$(CONFIG_SPARC32) += mul.o rem.o sdiv.o udiv.o umul.o urem.o ashrdi3.o
lib-$(CONFIG_SPARC32) += memcpy.o memset.o
-diff -urNp linux-2.6.39.3/arch/sparc/Makefile linux-2.6.39.3/arch/sparc/Makefile
---- linux-2.6.39.3/arch/sparc/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/Makefile 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/Makefile linux-2.6.39.4/arch/sparc/Makefile
+--- linux-2.6.39.4/arch/sparc/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/Makefile 2011-08-05 19:44:33.000000000 -0400
@@ -75,7 +75,7 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
# Export what is needed by arch/sparc/boot/Makefile
export VMLINUX_INIT VMLINUX_MAIN
@@ -6727,9 +4118,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/Makefile linux-2.6.39.3/arch/sparc/Makefile
VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y)
VMLINUX_MAIN += $(drivers-y) $(net-y)
-diff -urNp linux-2.6.39.3/arch/sparc/mm/fault_32.c linux-2.6.39.3/arch/sparc/mm/fault_32.c
---- linux-2.6.39.3/arch/sparc/mm/fault_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/fault_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/fault_32.c linux-2.6.39.4/arch/sparc/mm/fault_32.c
+--- linux-2.6.39.4/arch/sparc/mm/fault_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/fault_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -22,6 +22,9 @@
#include <linux/interrupt.h>
#include <linux/module.h>
@@ -7034,9 +4425,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/fault_32.c linux-2.6.39.3/arch/sparc/mm/
/* Allow reads even for write-only mappings */
if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
goto bad_area;
-diff -urNp linux-2.6.39.3/arch/sparc/mm/fault_64.c linux-2.6.39.3/arch/sparc/mm/fault_64.c
---- linux-2.6.39.3/arch/sparc/mm/fault_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/fault_64.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/fault_64.c linux-2.6.39.4/arch/sparc/mm/fault_64.c
+--- linux-2.6.39.4/arch/sparc/mm/fault_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/fault_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -21,6 +21,9 @@
#include <linux/kprobes.h>
#include <linux/kdebug.h>
@@ -7544,9 +4935,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/fault_64.c linux-2.6.39.3/arch/sparc/mm/
/* Pure DTLB misses do not tell us whether the fault causing
* load/store/atomic was a write or not, it only says that there
* was no match. So in such a case we (carefully) read the
-diff -urNp linux-2.6.39.3/arch/sparc/mm/hugetlbpage.c linux-2.6.39.3/arch/sparc/mm/hugetlbpage.c
---- linux-2.6.39.3/arch/sparc/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/hugetlbpage.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/hugetlbpage.c linux-2.6.39.4/arch/sparc/mm/hugetlbpage.c
+--- linux-2.6.39.4/arch/sparc/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/hugetlbpage.c 2011-08-05 19:44:33.000000000 -0400
@@ -68,7 +68,7 @@ full_search:
}
return -ENOMEM;
@@ -7606,9 +4997,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/hugetlbpage.c linux-2.6.39.3/arch/sparc/
return addr;
}
if (mm->get_unmapped_area == arch_get_unmapped_area)
-diff -urNp linux-2.6.39.3/arch/sparc/mm/init_32.c linux-2.6.39.3/arch/sparc/mm/init_32.c
---- linux-2.6.39.3/arch/sparc/mm/init_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/init_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/init_32.c linux-2.6.39.4/arch/sparc/mm/init_32.c
+--- linux-2.6.39.4/arch/sparc/mm/init_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/init_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -318,6 +318,9 @@ extern void device_scan(void);
pgprot_t PAGE_SHARED __read_mostly;
EXPORT_SYMBOL(PAGE_SHARED);
@@ -7643,9 +5034,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/init_32.c linux-2.6.39.3/arch/sparc/mm/i
protection_map[12] = PAGE_READONLY;
protection_map[13] = PAGE_READONLY;
protection_map[14] = PAGE_SHARED;
-diff -urNp linux-2.6.39.3/arch/sparc/mm/Makefile linux-2.6.39.3/arch/sparc/mm/Makefile
---- linux-2.6.39.3/arch/sparc/mm/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/Makefile 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/Makefile linux-2.6.39.4/arch/sparc/mm/Makefile
+--- linux-2.6.39.4/arch/sparc/mm/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/Makefile 2011-08-05 19:44:33.000000000 -0400
@@ -2,7 +2,7 @@
#
@@ -7655,9 +5046,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/Makefile linux-2.6.39.3/arch/sparc/mm/Ma
obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
obj-y += fault_$(BITS).o
-diff -urNp linux-2.6.39.3/arch/sparc/mm/srmmu.c linux-2.6.39.3/arch/sparc/mm/srmmu.c
---- linux-2.6.39.3/arch/sparc/mm/srmmu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/sparc/mm/srmmu.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/sparc/mm/srmmu.c linux-2.6.39.4/arch/sparc/mm/srmmu.c
+--- linux-2.6.39.4/arch/sparc/mm/srmmu.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/sparc/mm/srmmu.c 2011-08-05 19:44:33.000000000 -0400
@@ -2200,6 +2200,13 @@ void __init ld_mmu_srmmu(void)
PAGE_SHARED = pgprot_val(SRMMU_PAGE_SHARED);
BTFIXUPSET_INT(page_copy, pgprot_val(SRMMU_PAGE_COPY));
@@ -7672,30 +5063,9 @@ diff -urNp linux-2.6.39.3/arch/sparc/mm/srmmu.c linux-2.6.39.3/arch/sparc/mm/srm
BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL));
page_kernel = pgprot_val(SRMMU_PAGE_KERNEL);
-diff -urNp linux-2.6.39.3/arch/tile/kernel/pci.c linux-2.6.39.3/arch/tile/kernel/pci.c
---- linux-2.6.39.3/arch/tile/kernel/pci.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/tile/kernel/pci.c 2011-06-25 13:00:25.000000000 -0400
-@@ -60,7 +60,7 @@ int __write_once tile_plx_gen1;
- static struct pci_controller controllers[TILE_NUM_PCIE];
- static int num_controllers;
-
--static struct pci_ops tile_cfg_ops;
-+static const struct pci_ops tile_cfg_ops;
-
-
- /*
-@@ -563,7 +563,7 @@ static int __devinit tile_cfg_write(stru
- }
-
-
--static struct pci_ops tile_cfg_ops = {
-+static const struct pci_ops tile_cfg_ops = {
- .read = tile_cfg_read,
- .write = tile_cfg_write,
- };
-diff -urNp linux-2.6.39.3/arch/um/include/asm/kmap_types.h linux-2.6.39.3/arch/um/include/asm/kmap_types.h
---- linux-2.6.39.3/arch/um/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/um/include/asm/kmap_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/um/include/asm/kmap_types.h linux-2.6.39.4/arch/um/include/asm/kmap_types.h
+--- linux-2.6.39.4/arch/um/include/asm/kmap_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/um/include/asm/kmap_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -23,6 +23,7 @@ enum km_type {
KM_IRQ1,
KM_SOFTIRQ0,
@@ -7704,9 +5074,9 @@ diff -urNp linux-2.6.39.3/arch/um/include/asm/kmap_types.h linux-2.6.39.3/arch/u
KM_TYPE_NR
};
-diff -urNp linux-2.6.39.3/arch/um/include/asm/page.h linux-2.6.39.3/arch/um/include/asm/page.h
---- linux-2.6.39.3/arch/um/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/um/include/asm/page.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/um/include/asm/page.h linux-2.6.39.4/arch/um/include/asm/page.h
+--- linux-2.6.39.4/arch/um/include/asm/page.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/um/include/asm/page.h 2011-08-05 19:44:33.000000000 -0400
@@ -14,6 +14,9 @@
#define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))
@@ -7717,9 +5087,9 @@ diff -urNp linux-2.6.39.3/arch/um/include/asm/page.h linux-2.6.39.3/arch/um/incl
#ifndef __ASSEMBLY__
struct page;
-diff -urNp linux-2.6.39.3/arch/um/kernel/process.c linux-2.6.39.3/arch/um/kernel/process.c
---- linux-2.6.39.3/arch/um/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/um/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/um/kernel/process.c linux-2.6.39.4/arch/um/kernel/process.c
+--- linux-2.6.39.4/arch/um/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/um/kernel/process.c 2011-08-05 19:44:33.000000000 -0400
@@ -404,22 +404,6 @@ int singlestepping(void * t)
return 2;
}
@@ -7743,9 +5113,9 @@ diff -urNp linux-2.6.39.3/arch/um/kernel/process.c linux-2.6.39.3/arch/um/kernel
unsigned long get_wchan(struct task_struct *p)
{
unsigned long stack_page, sp, ip;
-diff -urNp linux-2.6.39.3/arch/um/sys-i386/syscalls.c linux-2.6.39.3/arch/um/sys-i386/syscalls.c
---- linux-2.6.39.3/arch/um/sys-i386/syscalls.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/um/sys-i386/syscalls.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/um/sys-i386/syscalls.c linux-2.6.39.4/arch/um/sys-i386/syscalls.c
+--- linux-2.6.39.4/arch/um/sys-i386/syscalls.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/um/sys-i386/syscalls.c 2011-08-05 19:44:33.000000000 -0400
@@ -11,6 +11,21 @@
#include "asm/uaccess.h"
#include "asm/unistd.h"
@@ -7768,21 +5138,9 @@ diff -urNp linux-2.6.39.3/arch/um/sys-i386/syscalls.c linux-2.6.39.3/arch/um/sys
/*
* The prototype on i386 is:
*
-diff -urNp linux-2.6.39.3/arch/unicore32/kernel/pci.c linux-2.6.39.3/arch/unicore32/kernel/pci.c
---- linux-2.6.39.3/arch/unicore32/kernel/pci.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/unicore32/kernel/pci.c 2011-05-22 19:36:30.000000000 -0400
-@@ -66,7 +66,7 @@ puv3_write_config(struct pci_bus *bus, u
- return PCIBIOS_SUCCESSFUL;
- }
-
--struct pci_ops pci_puv3_ops = {
-+const struct pci_ops pci_puv3_ops = {
- .read = puv3_read_config,
- .write = puv3_write_config,
- };
-diff -urNp linux-2.6.39.3/arch/x86/boot/bitops.h linux-2.6.39.3/arch/x86/boot/bitops.h
---- linux-2.6.39.3/arch/x86/boot/bitops.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/bitops.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/bitops.h linux-2.6.39.4/arch/x86/boot/bitops.h
+--- linux-2.6.39.4/arch/x86/boot/bitops.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/bitops.h 2011-08-05 19:44:33.000000000 -0400
@@ -26,7 +26,7 @@ static inline int variable_test_bit(int
u8 v;
const u32 *p = (const u32 *)addr;
@@ -7801,9 +5159,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/bitops.h linux-2.6.39.3/arch/x86/boot/bi
}
#endif /* BOOT_BITOPS_H */
-diff -urNp linux-2.6.39.3/arch/x86/boot/boot.h linux-2.6.39.3/arch/x86/boot/boot.h
---- linux-2.6.39.3/arch/x86/boot/boot.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/boot.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/boot.h linux-2.6.39.4/arch/x86/boot/boot.h
+--- linux-2.6.39.4/arch/x86/boot/boot.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/boot.h 2011-08-05 19:44:33.000000000 -0400
@@ -85,7 +85,7 @@ static inline void io_delay(void)
static inline u16 ds(void)
{
@@ -7822,9 +5180,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/boot.h linux-2.6.39.3/arch/x86/boot/boot
: "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
return diff;
}
-diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/head_32.S linux-2.6.39.3/arch/x86/boot/compressed/head_32.S
---- linux-2.6.39.3/arch/x86/boot/compressed/head_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/compressed/head_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/compressed/head_32.S linux-2.6.39.4/arch/x86/boot/compressed/head_32.S
+--- linux-2.6.39.4/arch/x86/boot/compressed/head_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/compressed/head_32.S 2011-08-05 19:44:33.000000000 -0400
@@ -76,7 +76,7 @@ ENTRY(startup_32)
notl %eax
andl %eax, %ebx
@@ -7853,9 +5211,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/head_32.S linux-2.6.39.3/arch
addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
jmp 1b
2:
-diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/head_64.S linux-2.6.39.3/arch/x86/boot/compressed/head_64.S
---- linux-2.6.39.3/arch/x86/boot/compressed/head_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/compressed/head_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/compressed/head_64.S linux-2.6.39.4/arch/x86/boot/compressed/head_64.S
+--- linux-2.6.39.4/arch/x86/boot/compressed/head_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/compressed/head_64.S 2011-08-05 19:44:33.000000000 -0400
@@ -91,7 +91,7 @@ ENTRY(startup_32)
notl %eax
andl %eax, %ebx
@@ -7874,9 +5232,22 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/head_64.S linux-2.6.39.3/arch
#endif
/* Target address to relocate to for decompression */
-diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/misc.c linux-2.6.39.3/arch/x86/boot/compressed/misc.c
---- linux-2.6.39.3/arch/x86/boot/compressed/misc.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/compressed/misc.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/compressed/Makefile linux-2.6.39.4/arch/x86/boot/compressed/Makefile
+--- linux-2.6.39.4/arch/x86/boot/compressed/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/compressed/Makefile 2011-08-05 20:34:06.000000000 -0400
+@@ -14,6 +14,9 @@ cflags-$(CONFIG_X86_64) := -mcmodel=smal
+ KBUILD_CFLAGS += $(cflags-y)
+ KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
+ KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
++ifdef CONSTIFY_PLUGIN
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
++endif
+
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
+diff -urNp linux-2.6.39.4/arch/x86/boot/compressed/misc.c linux-2.6.39.4/arch/x86/boot/compressed/misc.c
+--- linux-2.6.39.4/arch/x86/boot/compressed/misc.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/compressed/misc.c 2011-08-05 19:44:33.000000000 -0400
@@ -310,7 +310,7 @@ static void parse_elf(void *output)
case PT_LOAD:
#ifdef CONFIG_RELOCATABLE
@@ -7895,9 +5266,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/misc.c linux-2.6.39.3/arch/x8
error("Wrong destination address");
#endif
-diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/relocs.c linux-2.6.39.3/arch/x86/boot/compressed/relocs.c
---- linux-2.6.39.3/arch/x86/boot/compressed/relocs.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/compressed/relocs.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/compressed/relocs.c linux-2.6.39.4/arch/x86/boot/compressed/relocs.c
+--- linux-2.6.39.4/arch/x86/boot/compressed/relocs.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/compressed/relocs.c 2011-08-05 19:44:33.000000000 -0400
@@ -13,8 +13,11 @@
static void die(char *fmt, ...);
@@ -8090,9 +5461,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/compressed/relocs.c linux-2.6.39.3/arch/
read_shdrs(fp);
read_strtabs(fp);
read_symtabs(fp);
-diff -urNp linux-2.6.39.3/arch/x86/boot/cpucheck.c linux-2.6.39.3/arch/x86/boot/cpucheck.c
---- linux-2.6.39.3/arch/x86/boot/cpucheck.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/cpucheck.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/cpucheck.c linux-2.6.39.4/arch/x86/boot/cpucheck.c
+--- linux-2.6.39.4/arch/x86/boot/cpucheck.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/cpucheck.c 2011-08-05 19:44:33.000000000 -0400
@@ -74,7 +74,7 @@ static int has_fpu(void)
u16 fcw = -1, fsw = -1;
u32 cr0;
@@ -8188,9 +5559,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/cpucheck.c linux-2.6.39.3/arch/x86/boot/
err = check_flags();
}
-diff -urNp linux-2.6.39.3/arch/x86/boot/header.S linux-2.6.39.3/arch/x86/boot/header.S
---- linux-2.6.39.3/arch/x86/boot/header.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/header.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/header.S linux-2.6.39.4/arch/x86/boot/header.S
+--- linux-2.6.39.4/arch/x86/boot/header.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/header.S 2011-08-05 19:44:33.000000000 -0400
@@ -224,7 +224,7 @@ setup_data: .quad 0 # 64-bit physical
# single linked list of
# struct setup_data
@@ -8200,9 +5571,22 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/header.S linux-2.6.39.3/arch/x86/boot/he
#define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
#define VO_INIT_SIZE (VO__end - VO__text)
-diff -urNp linux-2.6.39.3/arch/x86/boot/memory.c linux-2.6.39.3/arch/x86/boot/memory.c
---- linux-2.6.39.3/arch/x86/boot/memory.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/memory.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/Makefile linux-2.6.39.4/arch/x86/boot/Makefile
+--- linux-2.6.39.4/arch/x86/boot/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/Makefile 2011-08-05 20:34:06.000000000 -0400
+@@ -69,6 +69,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
+ $(call cc-option, -fno-stack-protector) \
+ $(call cc-option, -mpreferred-stack-boundary=2)
+ KBUILD_CFLAGS += $(call cc-option, -m32)
++ifdef CONSTIFY_PLUGIN
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
++endif
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
+
+diff -urNp linux-2.6.39.4/arch/x86/boot/memory.c linux-2.6.39.4/arch/x86/boot/memory.c
+--- linux-2.6.39.4/arch/x86/boot/memory.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/memory.c 2011-08-05 19:44:33.000000000 -0400
@@ -19,7 +19,7 @@
static int detect_memory_e820(void)
@@ -8212,9 +5596,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/memory.c linux-2.6.39.3/arch/x86/boot/me
struct biosregs ireg, oreg;
struct e820entry *desc = boot_params.e820_map;
static struct e820entry buf; /* static so it is zeroed */
-diff -urNp linux-2.6.39.3/arch/x86/boot/video.c linux-2.6.39.3/arch/x86/boot/video.c
---- linux-2.6.39.3/arch/x86/boot/video.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/video.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/video.c linux-2.6.39.4/arch/x86/boot/video.c
+--- linux-2.6.39.4/arch/x86/boot/video.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/video.c 2011-08-05 19:44:33.000000000 -0400
@@ -96,7 +96,7 @@ static void store_mode_params(void)
static unsigned int get_entry(void)
{
@@ -8224,9 +5608,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/video.c linux-2.6.39.3/arch/x86/boot/vid
int key;
unsigned int v;
-diff -urNp linux-2.6.39.3/arch/x86/boot/video-vesa.c linux-2.6.39.3/arch/x86/boot/video-vesa.c
---- linux-2.6.39.3/arch/x86/boot/video-vesa.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/boot/video-vesa.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/boot/video-vesa.c linux-2.6.39.4/arch/x86/boot/video-vesa.c
+--- linux-2.6.39.4/arch/x86/boot/video-vesa.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/boot/video-vesa.c 2011-08-05 19:44:33.000000000 -0400
@@ -200,6 +200,7 @@ static void vesa_store_pm_info(void)
boot_params.screen_info.vesapm_seg = oreg.es;
@@ -8235,9 +5619,9 @@ diff -urNp linux-2.6.39.3/arch/x86/boot/video-vesa.c linux-2.6.39.3/arch/x86/boo
}
/*
-diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32_aout.c linux-2.6.39.3/arch/x86/ia32/ia32_aout.c
---- linux-2.6.39.3/arch/x86/ia32/ia32_aout.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/ia32/ia32_aout.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/ia32/ia32_aout.c linux-2.6.39.4/arch/x86/ia32/ia32_aout.c
+--- linux-2.6.39.4/arch/x86/ia32/ia32_aout.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/ia32/ia32_aout.c 2011-08-05 19:44:33.000000000 -0400
@@ -162,6 +162,8 @@ static int aout_core_dump(long signr, st
unsigned long dump_start, dump_size;
struct user32 dump;
@@ -8247,9 +5631,9 @@ diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32_aout.c linux-2.6.39.3/arch/x86/ia32
fs = get_fs();
set_fs(KERNEL_DS);
has_dumped = 1;
-diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32entry.S linux-2.6.39.3/arch/x86/ia32/ia32entry.S
---- linux-2.6.39.3/arch/x86/ia32/ia32entry.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/ia32/ia32entry.S 2011-05-23 17:16:01.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/ia32/ia32entry.S linux-2.6.39.4/arch/x86/ia32/ia32entry.S
+--- linux-2.6.39.4/arch/x86/ia32/ia32entry.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/ia32/ia32entry.S 2011-08-05 19:44:33.000000000 -0400
@@ -13,6 +13,7 @@
#include <asm/thread_info.h>
#include <asm/segment.h>
@@ -8427,9 +5811,9 @@ diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32entry.S linux-2.6.39.3/arch/x86/ia32
LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
RESTORE_REST
cmpq $(IA32_NR_syscalls-1),%rax
-diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32_signal.c linux-2.6.39.3/arch/x86/ia32/ia32_signal.c
---- linux-2.6.39.3/arch/x86/ia32/ia32_signal.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/ia32/ia32_signal.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/ia32/ia32_signal.c linux-2.6.39.4/arch/x86/ia32/ia32_signal.c
+--- linux-2.6.39.4/arch/x86/ia32/ia32_signal.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/ia32/ia32_signal.c 2011-08-05 19:44:33.000000000 -0400
@@ -403,7 +403,7 @@ static void __user *get_sigframe(struct
sp -= frame_size;
/* Align the stack pointer according to the i386 ABI,
@@ -8479,9 +5863,9 @@ diff -urNp linux-2.6.39.3/arch/x86/ia32/ia32_signal.c linux-2.6.39.3/arch/x86/ia
} put_user_catch(err);
if (err)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/alternative.h linux-2.6.39.3/arch/x86/include/asm/alternative.h
---- linux-2.6.39.3/arch/x86/include/asm/alternative.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/alternative.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/alternative.h linux-2.6.39.4/arch/x86/include/asm/alternative.h
+--- linux-2.6.39.4/arch/x86/include/asm/alternative.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/alternative.h 2011-08-05 19:44:33.000000000 -0400
@@ -94,7 +94,7 @@ static inline int alternatives_text_rese
".section .discard,\"aw\",@progbits\n" \
" .byte 0xff + (664f-663f) - (662b-661b)\n" /* rlen <= slen */ \
@@ -8491,9 +5875,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/alternative.h linux-2.6.39.3/arch
"663:\n\t" newinstr "\n664:\n" /* replacement */ \
".previous"
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/apm.h linux-2.6.39.3/arch/x86/include/asm/apm.h
---- linux-2.6.39.3/arch/x86/include/asm/apm.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/apm.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/apm.h linux-2.6.39.4/arch/x86/include/asm/apm.h
+--- linux-2.6.39.4/arch/x86/include/asm/apm.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/apm.h 2011-08-05 19:44:33.000000000 -0400
@@ -34,7 +34,7 @@ static inline void apm_bios_call_asm(u32
__asm__ __volatile__(APM_DO_ZERO_SEGS
"pushl %%edi\n\t"
@@ -8512,9 +5896,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/apm.h linux-2.6.39.3/arch/x86/inc
"setc %%bl\n\t"
"popl %%ebp\n\t"
"popl %%edi\n\t"
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic64_32.h linux-2.6.39.3/arch/x86/include/asm/atomic64_32.h
---- linux-2.6.39.3/arch/x86/include/asm/atomic64_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/atomic64_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/atomic64_32.h linux-2.6.39.4/arch/x86/include/asm/atomic64_32.h
+--- linux-2.6.39.4/arch/x86/include/asm/atomic64_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/atomic64_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -12,6 +12,14 @@ typedef struct {
u64 __aligned(8) counter;
} atomic64_t;
@@ -8664,9 +6048,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic64_32.h linux-2.6.39.3/arch
* atomic64_sub - subtract the atomic64 variable
* @i: integer value to subtract
* @v: pointer to type atomic64_t
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic64_64.h linux-2.6.39.3/arch/x86/include/asm/atomic64_64.h
---- linux-2.6.39.3/arch/x86/include/asm/atomic64_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/atomic64_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/atomic64_64.h linux-2.6.39.4/arch/x86/include/asm/atomic64_64.h
+--- linux-2.6.39.4/arch/x86/include/asm/atomic64_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/atomic64_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -18,7 +18,19 @@
*/
static inline long atomic64_read(const atomic64_t *v)
@@ -8988,9 +6372,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic64_64.h linux-2.6.39.3/arch
}
#define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic.h linux-2.6.39.3/arch/x86/include/asm/atomic.h
---- linux-2.6.39.3/arch/x86/include/asm/atomic.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/atomic.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/atomic.h linux-2.6.39.4/arch/x86/include/asm/atomic.h
+--- linux-2.6.39.4/arch/x86/include/asm/atomic.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/atomic.h 2011-08-05 19:44:33.000000000 -0400
@@ -22,7 +22,18 @@
*/
static inline int atomic_read(const atomic_t *v)
@@ -9403,9 +6787,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/atomic.h linux-2.6.39.3/arch/x86/
/*
* atomic_dec_if_positive - decrement by 1 if old value positive
* @v: pointer of type atomic_t
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/bitops.h linux-2.6.39.3/arch/x86/include/asm/bitops.h
---- linux-2.6.39.3/arch/x86/include/asm/bitops.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/bitops.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/bitops.h linux-2.6.39.4/arch/x86/include/asm/bitops.h
+--- linux-2.6.39.4/arch/x86/include/asm/bitops.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/bitops.h 2011-08-05 19:44:33.000000000 -0400
@@ -38,7 +38,7 @@
* a mask operation on a byte.
*/
@@ -9415,9 +6799,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/bitops.h linux-2.6.39.3/arch/x86/
#define CONST_MASK(nr) (1 << ((nr) & 7))
/**
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/boot.h linux-2.6.39.3/arch/x86/include/asm/boot.h
---- linux-2.6.39.3/arch/x86/include/asm/boot.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/boot.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/boot.h linux-2.6.39.4/arch/x86/include/asm/boot.h
+--- linux-2.6.39.4/arch/x86/include/asm/boot.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/boot.h 2011-08-05 19:44:33.000000000 -0400
@@ -11,10 +11,15 @@
#include <asm/pgtable_types.h>
@@ -9435,9 +6819,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/boot.h linux-2.6.39.3/arch/x86/in
/* Minimum kernel alignment, as a power of two */
#ifdef CONFIG_X86_64
#define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/cacheflush.h linux-2.6.39.3/arch/x86/include/asm/cacheflush.h
---- linux-2.6.39.3/arch/x86/include/asm/cacheflush.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/cacheflush.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/cacheflush.h linux-2.6.39.4/arch/x86/include/asm/cacheflush.h
+--- linux-2.6.39.4/arch/x86/include/asm/cacheflush.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/cacheflush.h 2011-08-05 19:44:33.000000000 -0400
@@ -26,7 +26,7 @@ static inline unsigned long get_page_mem
unsigned long pg_flags = pg->flags & _PGMT_MASK;
@@ -9447,9 +6831,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/cacheflush.h linux-2.6.39.3/arch/
else if (pg_flags == _PGMT_WC)
return _PAGE_CACHE_WC;
else if (pg_flags == _PGMT_UC_MINUS)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/cache.h linux-2.6.39.3/arch/x86/include/asm/cache.h
---- linux-2.6.39.3/arch/x86/include/asm/cache.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/cache.h 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/cache.h linux-2.6.39.4/arch/x86/include/asm/cache.h
+--- linux-2.6.39.4/arch/x86/include/asm/cache.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/cache.h 2011-08-05 19:44:33.000000000 -0400
@@ -5,12 +5,13 @@
/* L1 cache line size */
@@ -9466,9 +6850,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/cache.h linux-2.6.39.3/arch/x86/i
#ifdef CONFIG_X86_VSMP
#ifdef CONFIG_SMP
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/checksum_32.h linux-2.6.39.3/arch/x86/include/asm/checksum_32.h
---- linux-2.6.39.3/arch/x86/include/asm/checksum_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/checksum_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/checksum_32.h linux-2.6.39.4/arch/x86/include/asm/checksum_32.h
+--- linux-2.6.39.4/arch/x86/include/asm/checksum_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/checksum_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -31,6 +31,14 @@ asmlinkage __wsum csum_partial_copy_gene
int len, __wsum sum,
int *src_err_ptr, int *dst_err_ptr);
@@ -9502,9 +6886,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/checksum_32.h linux-2.6.39.3/arch
len, sum, NULL, err_ptr);
if (len)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/cpufeature.h linux-2.6.39.3/arch/x86/include/asm/cpufeature.h
---- linux-2.6.39.3/arch/x86/include/asm/cpufeature.h 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/cpufeature.h 2011-06-03 00:32:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/cpufeature.h linux-2.6.39.4/arch/x86/include/asm/cpufeature.h
+--- linux-2.6.39.4/arch/x86/include/asm/cpufeature.h 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/cpufeature.h 2011-08-05 19:44:33.000000000 -0400
@@ -351,7 +351,7 @@ static __always_inline __pure bool __sta
".section .discard,\"aw\",@progbits\n"
" .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
@@ -9514,9 +6898,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/cpufeature.h linux-2.6.39.3/arch/
"3: movb $1,%0\n"
"4:\n"
".previous\n"
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/desc_defs.h linux-2.6.39.3/arch/x86/include/asm/desc_defs.h
---- linux-2.6.39.3/arch/x86/include/asm/desc_defs.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/desc_defs.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/desc_defs.h linux-2.6.39.4/arch/x86/include/asm/desc_defs.h
+--- linux-2.6.39.4/arch/x86/include/asm/desc_defs.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/desc_defs.h 2011-08-05 19:44:33.000000000 -0400
@@ -31,6 +31,12 @@ struct desc_struct {
unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
@@ -9530,9 +6914,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/desc_defs.h linux-2.6.39.3/arch/x
};
} __attribute__((packed));
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/desc.h linux-2.6.39.3/arch/x86/include/asm/desc.h
---- linux-2.6.39.3/arch/x86/include/asm/desc.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/desc.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/desc.h linux-2.6.39.4/arch/x86/include/asm/desc.h
+--- linux-2.6.39.4/arch/x86/include/asm/desc.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/desc.h 2011-08-05 19:44:33.000000000 -0400
@@ -4,6 +4,7 @@
#include <asm/desc_defs.h>
#include <asm/ldt.h>
@@ -9713,63 +7097,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/desc.h linux-2.6.39.3/arch/x86/in
+#endif
+
#endif /* _ASM_X86_DESC_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/device.h linux-2.6.39.3/arch/x86/include/asm/device.h
---- linux-2.6.39.3/arch/x86/include/asm/device.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/device.h 2011-05-22 19:36:30.000000000 -0400
-@@ -6,7 +6,7 @@ struct dev_archdata {
- void *acpi_handle;
- #endif
- #ifdef CONFIG_X86_64
--struct dma_map_ops *dma_ops;
-+ const struct dma_map_ops *dma_ops;
- #endif
- #if defined(CONFIG_DMAR) || defined(CONFIG_AMD_IOMMU)
- void *iommu; /* hook for IOMMU specific extension */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/dma-mapping.h linux-2.6.39.3/arch/x86/include/asm/dma-mapping.h
---- linux-2.6.39.3/arch/x86/include/asm/dma-mapping.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/dma-mapping.h 2011-05-22 19:36:30.000000000 -0400
-@@ -26,9 +26,9 @@ extern int iommu_merge;
- extern struct device x86_dma_fallback_dev;
- extern int panic_on_overflow;
-
--extern struct dma_map_ops *dma_ops;
-+extern const struct dma_map_ops *dma_ops;
-
--static inline struct dma_map_ops *get_dma_ops(struct device *dev)
-+static inline const struct dma_map_ops *get_dma_ops(struct device *dev)
- {
- #ifdef CONFIG_X86_32
- return dma_ops;
-@@ -45,7 +45,7 @@ static inline struct dma_map_ops *get_dm
- /* Make sure we keep the same behaviour */
- static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- if (ops->mapping_error)
- return ops->mapping_error(dev, dma_addr);
-
-@@ -115,7 +115,7 @@ static inline void *
- dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
- gfp_t gfp)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
- void *memory;
-
- gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
-@@ -142,7 +142,7 @@ dma_alloc_coherent(struct device *dev, s
- static inline void dma_free_coherent(struct device *dev, size_t size,
- void *vaddr, dma_addr_t bus)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- WARN_ON(irqs_disabled()); /* for portability */
-
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/e820.h linux-2.6.39.3/arch/x86/include/asm/e820.h
---- linux-2.6.39.3/arch/x86/include/asm/e820.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/e820.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/e820.h linux-2.6.39.4/arch/x86/include/asm/e820.h
+--- linux-2.6.39.4/arch/x86/include/asm/e820.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/e820.h 2011-08-05 19:44:33.000000000 -0400
@@ -69,7 +69,7 @@ struct e820map {
#define ISA_START_ADDRESS 0xa0000
#define ISA_END_ADDRESS 0x100000
@@ -9779,9 +7109,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/e820.h linux-2.6.39.3/arch/x86/in
#define BIOS_END 0x00100000
#define BIOS_ROM_BASE 0xffe00000
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/elf.h linux-2.6.39.3/arch/x86/include/asm/elf.h
---- linux-2.6.39.3/arch/x86/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/elf.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/elf.h linux-2.6.39.4/arch/x86/include/asm/elf.h
+--- linux-2.6.39.4/arch/x86/include/asm/elf.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/elf.h 2011-08-05 19:44:33.000000000 -0400
@@ -237,7 +237,25 @@ extern int force_personality32;
the loader. We need to make sure that it is out of the way of the program
that it will "exec", and that there is sufficient room for the brk. */
@@ -9835,9 +7165,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/elf.h linux-2.6.39.3/arch/x86/inc
-#define arch_randomize_brk arch_randomize_brk
-
#endif /* _ASM_X86_ELF_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/emergency-restart.h linux-2.6.39.3/arch/x86/include/asm/emergency-restart.h
---- linux-2.6.39.3/arch/x86/include/asm/emergency-restart.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/emergency-restart.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/emergency-restart.h linux-2.6.39.4/arch/x86/include/asm/emergency-restart.h
+--- linux-2.6.39.4/arch/x86/include/asm/emergency-restart.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/emergency-restart.h 2011-08-05 19:44:33.000000000 -0400
@@ -15,6 +15,6 @@ enum reboot_type {
extern enum reboot_type reboot_type;
@@ -9846,9 +7176,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/emergency-restart.h linux-2.6.39.
+extern void machine_emergency_restart(void) __noreturn;
#endif /* _ASM_X86_EMERGENCY_RESTART_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/futex.h linux-2.6.39.3/arch/x86/include/asm/futex.h
---- linux-2.6.39.3/arch/x86/include/asm/futex.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/futex.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/futex.h linux-2.6.39.4/arch/x86/include/asm/futex.h
+--- linux-2.6.39.4/arch/x86/include/asm/futex.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/futex.h 2011-08-05 19:44:33.000000000 -0400
@@ -12,16 +12,18 @@
#include <asm/system.h>
@@ -9907,9 +7237,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/futex.h linux-2.6.39.3/arch/x86/i
: "i" (-EFAULT), "r" (newval), "1" (oldval)
: "memory"
);
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/hw_irq.h linux-2.6.39.3/arch/x86/include/asm/hw_irq.h
---- linux-2.6.39.3/arch/x86/include/asm/hw_irq.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/hw_irq.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/hw_irq.h linux-2.6.39.4/arch/x86/include/asm/hw_irq.h
+--- linux-2.6.39.4/arch/x86/include/asm/hw_irq.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/hw_irq.h 2011-08-05 19:44:33.000000000 -0400
@@ -137,8 +137,8 @@ extern void setup_ioapic_dest(void);
extern void enable_IO_APIC(void);
@@ -9921,9 +7251,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/hw_irq.h linux-2.6.39.3/arch/x86/
/* EISA */
extern void eisa_set_level_irq(unsigned int irq);
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/i387.h linux-2.6.39.3/arch/x86/include/asm/i387.h
---- linux-2.6.39.3/arch/x86/include/asm/i387.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/i387.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/i387.h linux-2.6.39.4/arch/x86/include/asm/i387.h
+--- linux-2.6.39.4/arch/x86/include/asm/i387.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/i387.h 2011-08-05 19:44:33.000000000 -0400
@@ -92,6 +92,11 @@ static inline int fxrstor_checking(struc
{
int err;
@@ -9973,9 +7303,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/i387.h linux-2.6.39.3/arch/x86/in
else
clts();
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/io.h linux-2.6.39.3/arch/x86/include/asm/io.h
---- linux-2.6.39.3/arch/x86/include/asm/io.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/io.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/io.h linux-2.6.39.4/arch/x86/include/asm/io.h
+--- linux-2.6.39.4/arch/x86/include/asm/io.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/io.h 2011-08-05 19:44:33.000000000 -0400
@@ -216,6 +216,17 @@ extern void set_iounmap_nonlazy(void);
#include <linux/vmalloc.h>
@@ -9994,21 +7324,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/io.h linux-2.6.39.3/arch/x86/incl
/*
* Convert a virtual cached pointer to an uncached pointer
*/
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/iommu.h linux-2.6.39.3/arch/x86/include/asm/iommu.h
---- linux-2.6.39.3/arch/x86/include/asm/iommu.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/iommu.h 2011-05-22 19:36:30.000000000 -0400
-@@ -1,7 +1,7 @@
- #ifndef _ASM_X86_IOMMU_H
- #define _ASM_X86_IOMMU_H
-
--extern struct dma_map_ops nommu_dma_ops;
-+extern const struct dma_map_ops nommu_dma_ops;
- extern int force_iommu, no_iommu;
- extern int iommu_detected;
- extern int iommu_pass_through;
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/irqflags.h linux-2.6.39.3/arch/x86/include/asm/irqflags.h
---- linux-2.6.39.3/arch/x86/include/asm/irqflags.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/irqflags.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/irqflags.h linux-2.6.39.4/arch/x86/include/asm/irqflags.h
+--- linux-2.6.39.4/arch/x86/include/asm/irqflags.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/irqflags.h 2011-08-05 19:44:33.000000000 -0400
@@ -140,6 +140,11 @@ static inline unsigned long arch_local_i
sti; \
sysexit
@@ -10021,9 +7339,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/irqflags.h linux-2.6.39.3/arch/x8
#else
#define INTERRUPT_RETURN iret
#define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/kprobes.h linux-2.6.39.3/arch/x86/include/asm/kprobes.h
---- linux-2.6.39.3/arch/x86/include/asm/kprobes.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/kprobes.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/kprobes.h linux-2.6.39.4/arch/x86/include/asm/kprobes.h
+--- linux-2.6.39.4/arch/x86/include/asm/kprobes.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/kprobes.h 2011-08-05 19:44:33.000000000 -0400
@@ -37,13 +37,8 @@ typedef u8 kprobe_opcode_t;
#define RELATIVEJUMP_SIZE 5
#define RELATIVECALL_OPCODE 0xe8
@@ -10040,9 +7358,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/kprobes.h linux-2.6.39.3/arch/x86
#define flush_insn_slot(p) do { } while (0)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/kvm_host.h linux-2.6.39.3/arch/x86/include/asm/kvm_host.h
---- linux-2.6.39.3/arch/x86/include/asm/kvm_host.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/kvm_host.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/kvm_host.h linux-2.6.39.4/arch/x86/include/asm/kvm_host.h
+--- linux-2.6.39.4/arch/x86/include/asm/kvm_host.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/kvm_host.h 2011-08-05 20:34:06.000000000 -0400
@@ -419,7 +419,7 @@ struct kvm_arch {
unsigned int n_used_mmu_pages;
unsigned int n_requested_mmu_pages;
@@ -10052,18 +7370,18 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/kvm_host.h linux-2.6.39.3/arch/x8
struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
/*
* Hash table of struct kvm_mmu_page.
-@@ -599,7 +599,7 @@ struct kvm_arch_async_pf {
- bool direct_map;
- };
+@@ -589,7 +589,7 @@ struct kvm_x86_ops {
+ void (*write_tsc_offset)(struct kvm_vcpu *vcpu, u64 offset);
--extern struct kvm_x86_ops *kvm_x86_ops;
-+extern const struct kvm_x86_ops *kvm_x86_ops;
+ void (*get_exit_info)(struct kvm_vcpu *vcpu, u64 *info1, u64 *info2);
+- const struct trace_print_flags *exit_reasons_str;
++ const struct trace_print_flags * const exit_reasons_str;
+ };
- int kvm_mmu_module_init(void);
- void kvm_mmu_module_exit(void);
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/local.h linux-2.6.39.3/arch/x86/include/asm/local.h
---- linux-2.6.39.3/arch/x86/include/asm/local.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/local.h 2011-05-22 19:36:30.000000000 -0400
+ struct kvm_arch_async_pf {
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/local.h linux-2.6.39.4/arch/x86/include/asm/local.h
+--- linux-2.6.39.4/arch/x86/include/asm/local.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/local.h 2011-08-05 19:44:33.000000000 -0400
@@ -18,26 +18,58 @@ typedef struct {
static inline void local_inc(local_t *l)
@@ -10216,70 +7534,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/local.h linux-2.6.39.3/arch/x86/i
: "+r" (i), "+m" (l->a.counter)
: : "memory");
return i + __i;
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/mce.h linux-2.6.39.3/arch/x86/include/asm/mce.h
---- linux-2.6.39.3/arch/x86/include/asm/mce.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/mce.h 2011-05-22 19:36:30.000000000 -0400
-@@ -198,7 +198,7 @@ int mce_notify_irq(void);
- void mce_notify_process(void);
-
- DECLARE_PER_CPU(struct mce, injectm);
--extern struct file_operations mce_chrdev_ops;
-+extern struct file_operations mce_chrdev_ops; /* cannot be const, see arch/x86/kernel/cpu/mcheck/mce. */
-
- /*
- * Exception handler
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/microcode.h linux-2.6.39.3/arch/x86/include/asm/microcode.h
---- linux-2.6.39.3/arch/x86/include/asm/microcode.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/microcode.h 2011-05-22 19:36:30.000000000 -0400
-@@ -12,13 +12,13 @@ struct device;
- enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND };
-
- struct microcode_ops {
-- enum ucode_state (*request_microcode_user) (int cpu,
-+ enum ucode_state (* const request_microcode_user) (int cpu,
- const void __user *buf, size_t size);
-
-- enum ucode_state (*request_microcode_fw) (int cpu,
-+ enum ucode_state (* const request_microcode_fw) (int cpu,
- struct device *device);
-
-- void (*microcode_fini_cpu) (int cpu);
-+ void (* const microcode_fini_cpu) (int cpu);
-
- /*
- * The generic 'microcode_core' part guarantees that
-@@ -38,16 +38,16 @@ struct ucode_cpu_info {
- extern struct ucode_cpu_info ucode_cpu_info[];
-
- #ifdef CONFIG_MICROCODE_INTEL
--extern struct microcode_ops * __init init_intel_microcode(void);
-+extern const struct microcode_ops * __init init_intel_microcode(void);
- #else
--static inline struct microcode_ops * __init init_intel_microcode(void)
-+static inline const struct microcode_ops * __init init_intel_microcode(void)
- {
- return NULL;
- }
- #endif /* CONFIG_MICROCODE_INTEL */
-
- #ifdef CONFIG_MICROCODE_AMD
--extern struct microcode_ops * __init init_amd_microcode(void);
-+extern const struct microcode_ops * __init init_amd_microcode(void);
-
- static inline void get_ucode_data(void *to, const u8 *from, size_t n)
- {
-@@ -55,7 +55,7 @@ static inline void get_ucode_data(void *
- }
-
- #else
--static inline struct microcode_ops * __init init_amd_microcode(void)
-+static inline const struct microcode_ops * __init init_amd_microcode(void)
- {
- return NULL;
- }
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/mman.h linux-2.6.39.3/arch/x86/include/asm/mman.h
---- linux-2.6.39.3/arch/x86/include/asm/mman.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/mman.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/mman.h linux-2.6.39.4/arch/x86/include/asm/mman.h
+--- linux-2.6.39.4/arch/x86/include/asm/mman.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/mman.h 2011-08-05 19:44:33.000000000 -0400
@@ -5,4 +5,14 @@
#include <asm-generic/mman.h>
@@ -10295,9 +7552,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/mman.h linux-2.6.39.3/arch/x86/in
+#endif
+
#endif /* _ASM_X86_MMAN_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/mmu_context.h linux-2.6.39.3/arch/x86/include/asm/mmu_context.h
---- linux-2.6.39.3/arch/x86/include/asm/mmu_context.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/mmu_context.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/mmu_context.h linux-2.6.39.4/arch/x86/include/asm/mmu_context.h
+--- linux-2.6.39.4/arch/x86/include/asm/mmu_context.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/mmu_context.h 2011-08-05 19:44:33.000000000 -0400
@@ -24,6 +24,21 @@ void destroy_context(struct mm_struct *m
static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
@@ -10421,9 +7678,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/mmu_context.h linux-2.6.39.3/arch
}
#define activate_mm(prev, next) \
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/mmu.h linux-2.6.39.3/arch/x86/include/asm/mmu.h
---- linux-2.6.39.3/arch/x86/include/asm/mmu.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/mmu.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/mmu.h linux-2.6.39.4/arch/x86/include/asm/mmu.h
+--- linux-2.6.39.4/arch/x86/include/asm/mmu.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/mmu.h 2011-08-05 19:44:33.000000000 -0400
@@ -9,10 +9,22 @@
* we put the segment information here.
*/
@@ -10449,9 +7706,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/mmu.h linux-2.6.39.3/arch/x86/inc
#ifdef CONFIG_X86_64
/* True if mm supports a task running in 32 bit compatibility mode. */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/module.h linux-2.6.39.3/arch/x86/include/asm/module.h
---- linux-2.6.39.3/arch/x86/include/asm/module.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/module.h 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/module.h linux-2.6.39.4/arch/x86/include/asm/module.h
+--- linux-2.6.39.4/arch/x86/include/asm/module.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/module.h 2011-08-05 19:44:33.000000000 -0400
@@ -5,6 +5,7 @@
#ifdef CONFIG_X86_64
@@ -10493,9 +7750,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/module.h linux-2.6.39.3/arch/x86/
+#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_GRSEC MODULE_PAX_KERNEXEC MODULE_PAX_UDEREF MODULE_PAX_REFCOUNT
+
#endif /* _ASM_X86_MODULE_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/page_64_types.h linux-2.6.39.3/arch/x86/include/asm/page_64_types.h
---- linux-2.6.39.3/arch/x86/include/asm/page_64_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/page_64_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/page_64_types.h linux-2.6.39.4/arch/x86/include/asm/page_64_types.h
+--- linux-2.6.39.4/arch/x86/include/asm/page_64_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/page_64_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -56,7 +56,7 @@ void copy_page(void *to, void *from);
/* duplicated to the one in bootmem.h */
@@ -10505,9 +7762,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/page_64_types.h linux-2.6.39.3/ar
extern unsigned long __phys_addr(unsigned long);
#define __phys_reloc_hide(x) (x)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/paravirt.h linux-2.6.39.3/arch/x86/include/asm/paravirt.h
---- linux-2.6.39.3/arch/x86/include/asm/paravirt.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/paravirt.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/paravirt.h linux-2.6.39.4/arch/x86/include/asm/paravirt.h
+--- linux-2.6.39.4/arch/x86/include/asm/paravirt.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/paravirt.h 2011-08-05 19:44:33.000000000 -0400
@@ -739,6 +739,21 @@ static inline void __set_fixmap(unsigned
pv_mmu_ops.set_fixmap(idx, phys, flags);
}
@@ -10561,9 +7818,50 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/paravirt.h linux-2.6.39.3/arch/x8
#endif /* CONFIG_X86_32 */
#endif /* __ASSEMBLY__ */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/paravirt_types.h linux-2.6.39.3/arch/x86/include/asm/paravirt_types.h
---- linux-2.6.39.3/arch/x86/include/asm/paravirt_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/paravirt_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/paravirt_types.h linux-2.6.39.4/arch/x86/include/asm/paravirt_types.h
+--- linux-2.6.39.4/arch/x86/include/asm/paravirt_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/paravirt_types.h 2011-08-05 20:34:06.000000000 -0400
+@@ -78,19 +78,19 @@ struct pv_init_ops {
+ */
+ unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
+ unsigned long addr, unsigned len);
+-};
++} __no_const;
+
+
+ struct pv_lazy_ops {
+ /* Set deferred update mode, used for batching operations. */
+ void (*enter)(void);
+ void (*leave)(void);
+-};
++} __no_const;
+
+ struct pv_time_ops {
+ unsigned long long (*sched_clock)(void);
+ unsigned long (*get_tsc_khz)(void);
+-};
++} __no_const;
+
+ struct pv_cpu_ops {
+ /* hooks for various privileged instructions */
+@@ -186,7 +186,7 @@ struct pv_cpu_ops {
+
+ void (*start_context_switch)(struct task_struct *prev);
+ void (*end_context_switch)(struct task_struct *next);
+-};
++} __no_const;
+
+ struct pv_irq_ops {
+ /*
+@@ -217,7 +217,7 @@ struct pv_apic_ops {
+ unsigned long start_eip,
+ unsigned long start_esp);
+ #endif
+-};
++} __no_const;
+
+ struct pv_mmu_ops {
+ unsigned long (*read_cr2)(void);
@@ -317,6 +317,12 @@ struct pv_mmu_ops {
an mfn. We can tell which is which from the index. */
void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
@@ -10577,34 +7875,18 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/paravirt_types.h linux-2.6.39.3/a
};
struct arch_spinlock;
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pci_x86.h linux-2.6.39.3/arch/x86/include/asm/pci_x86.h
---- linux-2.6.39.3/arch/x86/include/asm/pci_x86.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pci_x86.h 2011-05-22 19:36:30.000000000 -0400
-@@ -93,16 +93,16 @@ extern int (*pcibios_enable_irq)(struct
- extern void (*pcibios_disable_irq)(struct pci_dev *dev);
-
- struct pci_raw_ops {
-- int (*read)(unsigned int domain, unsigned int bus, unsigned int devfn,
-+ int (* const read)(unsigned int domain, unsigned int bus, unsigned int devfn,
- int reg, int len, u32 *val);
-- int (*write)(unsigned int domain, unsigned int bus, unsigned int devfn,
-+ int (* const write)(unsigned int domain, unsigned int bus, unsigned int devfn,
- int reg, int len, u32 val);
- };
-
--extern struct pci_raw_ops *raw_pci_ops;
--extern struct pci_raw_ops *raw_pci_ext_ops;
-+extern const struct pci_raw_ops *raw_pci_ops;
-+extern const struct pci_raw_ops *raw_pci_ext_ops;
-
--extern struct pci_raw_ops pci_direct_conf1;
-+extern const struct pci_raw_ops pci_direct_conf1;
- extern bool port_cf9_safe;
-
- /* arch_initcall level */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgalloc.h linux-2.6.39.3/arch/x86/include/asm/pgalloc.h
---- linux-2.6.39.3/arch/x86/include/asm/pgalloc.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgalloc.h 2011-05-22 19:36:30.000000000 -0400
+@@ -327,7 +333,7 @@ struct pv_lock_ops {
+ void (*spin_lock_flags)(struct arch_spinlock *lock, unsigned long flags);
+ int (*spin_trylock)(struct arch_spinlock *lock);
+ void (*spin_unlock)(struct arch_spinlock *lock);
+-};
++} __no_const;
+
+ /* This contains all the paravirt structures: we get a convenient
+ * number for each function using the offset which we use to indicate
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgalloc.h linux-2.6.39.4/arch/x86/include/asm/pgalloc.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgalloc.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgalloc.h 2011-08-05 19:44:33.000000000 -0400
@@ -63,6 +63,13 @@ static inline void pmd_populate_kernel(s
pmd_t *pmd, pte_t *pte)
{
@@ -10619,9 +7901,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgalloc.h linux-2.6.39.3/arch/x86
set_pmd(pmd, __pmd(__pa(pte) | _PAGE_TABLE));
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable-2level.h linux-2.6.39.3/arch/x86/include/asm/pgtable-2level.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable-2level.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable-2level.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable-2level.h linux-2.6.39.4/arch/x86/include/asm/pgtable-2level.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable-2level.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable-2level.h 2011-08-05 19:44:33.000000000 -0400
@@ -18,7 +18,9 @@ static inline void native_set_pte(pte_t
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
@@ -10632,9 +7914,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable-2level.h linux-2.6.39.3/a
}
static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_32.h linux-2.6.39.3/arch/x86/include/asm/pgtable_32.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable_32.h linux-2.6.39.4/arch/x86/include/asm/pgtable_32.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -25,9 +25,6 @@
struct mm_struct;
struct vm_area_struct;
@@ -10678,9 +7960,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_32.h linux-2.6.39.3/arch/
/*
* kern_addr_valid() is (1) for FLATMEM and (0) for
* SPARSEMEM and DISCONTIGMEM
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_32_types.h linux-2.6.39.3/arch/x86/include/asm/pgtable_32_types.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable_32_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable_32_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable_32_types.h linux-2.6.39.4/arch/x86/include/asm/pgtable_32_types.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable_32_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable_32_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -8,7 +8,7 @@
*/
#ifdef CONFIG_X86_PAE
@@ -10710,9 +7992,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_32_types.h linux-2.6.39.3
#define MODULES_VADDR VMALLOC_START
#define MODULES_END VMALLOC_END
#define MODULES_LEN (MODULES_VADDR - MODULES_END)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable-3level.h linux-2.6.39.3/arch/x86/include/asm/pgtable-3level.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable-3level.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable-3level.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable-3level.h linux-2.6.39.4/arch/x86/include/asm/pgtable-3level.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable-3level.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable-3level.h 2011-08-05 19:44:33.000000000 -0400
@@ -38,12 +38,16 @@ static inline void native_set_pte_atomic
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
@@ -10730,9 +8012,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable-3level.h linux-2.6.39.3/a
}
/*
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_64.h linux-2.6.39.3/arch/x86/include/asm/pgtable_64.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable_64.h linux-2.6.39.4/arch/x86/include/asm/pgtable_64.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -16,10 +16,13 @@
extern pud_t level3_kernel_pgt[512];
@@ -10769,9 +8051,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_64.h linux-2.6.39.3/arch/
}
static inline void native_pgd_clear(pgd_t *pgd)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_64_types.h linux-2.6.39.3/arch/x86/include/asm/pgtable_64_types.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable_64_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable_64_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable_64_types.h linux-2.6.39.4/arch/x86/include/asm/pgtable_64_types.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable_64_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable_64_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -59,5 +59,10 @@ typedef struct { pteval_t pte; } pte_t;
#define MODULES_VADDR _AC(0xffffffffa0000000, UL)
#define MODULES_END _AC(0xffffffffff000000, UL)
@@ -10783,9 +8065,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_64_types.h linux-2.6.39.3
+#define ktva_ktla(addr) (addr)
#endif /* _ASM_X86_PGTABLE_64_DEFS_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable.h linux-2.6.39.3/arch/x86/include/asm/pgtable.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable.h linux-2.6.39.4/arch/x86/include/asm/pgtable.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable.h 2011-08-05 19:44:33.000000000 -0400
@@ -81,12 +81,51 @@ extern struct mm_struct *pgd_page_get_mm
#define arch_end_context_switch(prev) do {} while(0)
@@ -10955,9 +8237,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable.h linux-2.6.39.3/arch/x86
#include <asm-generic/pgtable.h>
#endif /* __ASSEMBLY__ */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_types.h linux-2.6.39.3/arch/x86/include/asm/pgtable_types.h
---- linux-2.6.39.3/arch/x86/include/asm/pgtable_types.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/pgtable_types.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/pgtable_types.h linux-2.6.39.4/arch/x86/include/asm/pgtable_types.h
+--- linux-2.6.39.4/arch/x86/include/asm/pgtable_types.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/pgtable_types.h 2011-08-05 19:44:33.000000000 -0400
@@ -16,13 +16,12 @@
#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
#define _PAGE_BIT_PAT 7 /* on 4KB pages */
@@ -11071,9 +8353,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/pgtable_types.h linux-2.6.39.3/ar
#define pgprot_writecombine pgprot_writecombine
extern pgprot_t pgprot_writecombine(pgprot_t prot);
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/processor.h linux-2.6.39.3/arch/x86/include/asm/processor.h
---- linux-2.6.39.3/arch/x86/include/asm/processor.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/processor.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/processor.h linux-2.6.39.4/arch/x86/include/asm/processor.h
+--- linux-2.6.39.4/arch/x86/include/asm/processor.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/processor.h 2011-08-05 19:44:33.000000000 -0400
@@ -266,7 +266,7 @@ struct tss_struct {
} ____cacheline_aligned;
@@ -11176,9 +8458,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/processor.h linux-2.6.39.3/arch/x
#define KSTK_EIP(task) (task_pt_regs(task)->ip)
/* Get/set a process' ability to use the timestamp counter instruction */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/ptrace.h linux-2.6.39.3/arch/x86/include/asm/ptrace.h
---- linux-2.6.39.3/arch/x86/include/asm/ptrace.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/ptrace.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/ptrace.h linux-2.6.39.4/arch/x86/include/asm/ptrace.h
+--- linux-2.6.39.4/arch/x86/include/asm/ptrace.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/ptrace.h 2011-08-05 19:44:33.000000000 -0400
@@ -152,28 +152,29 @@ static inline unsigned long regs_return_
}
@@ -11215,9 +8497,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/ptrace.h linux-2.6.39.3/arch/x86/
#endif
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/reboot.h linux-2.6.39.3/arch/x86/include/asm/reboot.h
---- linux-2.6.39.3/arch/x86/include/asm/reboot.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/reboot.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/reboot.h linux-2.6.39.4/arch/x86/include/asm/reboot.h
+--- linux-2.6.39.4/arch/x86/include/asm/reboot.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/reboot.h 2011-08-05 20:34:06.000000000 -0400
@@ -6,19 +6,19 @@
struct pt_regs;
@@ -11231,8 +8513,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/reboot.h linux-2.6.39.3/arch/x86/
void (*shutdown)(void);
void (*crash_shutdown)(struct pt_regs *);
- void (*emergency_restart)(void);
+-};
+ void (* __noreturn emergency_restart)(void);
- };
++} __no_const;
extern struct machine_ops machine_ops;
@@ -11243,9 +8526,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/reboot.h linux-2.6.39.3/arch/x86/
/* These must match dispatch_table in reboot_32.S */
#define MRR_BIOS 0
#define MRR_APM 1
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/rwsem.h linux-2.6.39.3/arch/x86/include/asm/rwsem.h
---- linux-2.6.39.3/arch/x86/include/asm/rwsem.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/rwsem.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/rwsem.h linux-2.6.39.4/arch/x86/include/asm/rwsem.h
+--- linux-2.6.39.4/arch/x86/include/asm/rwsem.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/rwsem.h 2011-08-05 19:44:33.000000000 -0400
@@ -64,6 +64,14 @@ static inline void __down_read(struct rw
{
asm volatile("# beginning down_read\n\t"
@@ -11370,9 +8653,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/rwsem.h linux-2.6.39.3/arch/x86/i
: "+r" (tmp), "+m" (sem->count)
: : "memory");
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/segment.h linux-2.6.39.3/arch/x86/include/asm/segment.h
---- linux-2.6.39.3/arch/x86/include/asm/segment.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/segment.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/segment.h linux-2.6.39.4/arch/x86/include/asm/segment.h
+--- linux-2.6.39.4/arch/x86/include/asm/segment.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/segment.h 2011-08-05 19:44:33.000000000 -0400
@@ -64,8 +64,8 @@
* 26 - ESPFIX small SS
* 27 - per-cpu [ offset to per-cpu data area ]
@@ -11432,9 +8715,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/segment.h linux-2.6.39.3/arch/x86
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3)
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3)
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/smp.h linux-2.6.39.3/arch/x86/include/asm/smp.h
---- linux-2.6.39.3/arch/x86/include/asm/smp.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/smp.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/smp.h linux-2.6.39.4/arch/x86/include/asm/smp.h
+--- linux-2.6.39.4/arch/x86/include/asm/smp.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/smp.h 2011-08-05 20:34:06.000000000 -0400
@@ -36,7 +36,7 @@ DECLARE_PER_CPU(cpumask_var_t, cpu_core_
/* cpus sharing the last level cache: */
DECLARE_PER_CPU(cpumask_var_t, cpu_llc_shared_map);
@@ -11444,6 +8727,15 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/smp.h linux-2.6.39.3/arch/x86/inc
static inline struct cpumask *cpu_sibling_mask(int cpu)
{
+@@ -77,7 +77,7 @@ struct smp_ops {
+
+ void (*send_call_func_ipi)(const struct cpumask *mask);
+ void (*send_call_func_single_ipi)(int cpu);
+-};
++} __no_const;
+
+ /* Globals due to paravirt */
+ extern void set_cpu_sibling_map(int cpu);
@@ -192,14 +192,8 @@ extern unsigned disabled_cpus __cpuinitd
extern int safe_smp_processor_id(void);
@@ -11461,9 +8753,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/smp.h linux-2.6.39.3/arch/x86/inc
#define safe_smp_processor_id() smp_processor_id()
#endif
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/spinlock.h linux-2.6.39.3/arch/x86/include/asm/spinlock.h
---- linux-2.6.39.3/arch/x86/include/asm/spinlock.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/spinlock.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/spinlock.h linux-2.6.39.4/arch/x86/include/asm/spinlock.h
+--- linux-2.6.39.4/arch/x86/include/asm/spinlock.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/spinlock.h 2011-08-05 19:44:33.000000000 -0400
@@ -249,6 +249,14 @@ static inline int arch_write_can_lock(ar
static inline void arch_read_lock(arch_rwlock_t *rw)
{
@@ -11526,9 +8818,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/spinlock.h linux-2.6.39.3/arch/x8
: "+m" (rw->lock) : "i" (RW_LOCK_BIAS) : "memory");
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/stackprotector.h linux-2.6.39.3/arch/x86/include/asm/stackprotector.h
---- linux-2.6.39.3/arch/x86/include/asm/stackprotector.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/stackprotector.h 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/stackprotector.h linux-2.6.39.4/arch/x86/include/asm/stackprotector.h
+--- linux-2.6.39.4/arch/x86/include/asm/stackprotector.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/stackprotector.h 2011-08-05 19:44:33.000000000 -0400
@@ -48,7 +48,7 @@
* head_32 for boot CPU and setup_per_cpu_areas() for others.
*/
@@ -11547,9 +8839,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/stackprotector.h linux-2.6.39.3/a
asm volatile ("mov %0, %%gs" : : "r" (0));
#endif
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/stacktrace.h linux-2.6.39.3/arch/x86/include/asm/stacktrace.h
---- linux-2.6.39.3/arch/x86/include/asm/stacktrace.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/stacktrace.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/stacktrace.h linux-2.6.39.4/arch/x86/include/asm/stacktrace.h
+--- linux-2.6.39.4/arch/x86/include/asm/stacktrace.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/stacktrace.h 2011-08-05 19:44:33.000000000 -0400
@@ -11,28 +11,20 @@
extern int kstack_depth_to_print;
@@ -11600,9 +8892,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/stacktrace.h linux-2.6.39.3/arch/
};
void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/system.h linux-2.6.39.3/arch/x86/include/asm/system.h
---- linux-2.6.39.3/arch/x86/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/system.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/system.h linux-2.6.39.4/arch/x86/include/asm/system.h
+--- linux-2.6.39.4/arch/x86/include/asm/system.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/system.h 2011-08-05 19:44:33.000000000 -0400
@@ -129,7 +129,7 @@ do { \
"call __switch_to\n\t" \
"movq "__percpu_arg([current_task])",%%rsi\n\t" \
@@ -11645,9 +8937,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/system.h linux-2.6.39.3/arch/x86/
/*
* Force strict CPU ordering.
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/thread_info.h linux-2.6.39.3/arch/x86/include/asm/thread_info.h
---- linux-2.6.39.3/arch/x86/include/asm/thread_info.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/thread_info.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/thread_info.h linux-2.6.39.4/arch/x86/include/asm/thread_info.h
+--- linux-2.6.39.4/arch/x86/include/asm/thread_info.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/thread_info.h 2011-08-05 19:44:33.000000000 -0400
@@ -10,6 +10,7 @@
#include <linux/compiler.h>
#include <asm/page.h>
@@ -11795,9 +9087,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/thread_info.h linux-2.6.39.3/arch
+
#endif
#endif /* _ASM_X86_THREAD_INFO_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess_32.h linux-2.6.39.3/arch/x86/include/asm/uaccess_32.h
---- linux-2.6.39.3/arch/x86/include/asm/uaccess_32.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/uaccess_32.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/uaccess_32.h linux-2.6.39.4/arch/x86/include/asm/uaccess_32.h
+--- linux-2.6.39.4/arch/x86/include/asm/uaccess_32.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/uaccess_32.h 2011-08-05 19:44:33.000000000 -0400
@@ -44,6 +44,11 @@ unsigned long __must_check __copy_from_u
static __always_inline unsigned long __must_check
__copy_to_user_inatomic(void __user *to, const void *from, unsigned long n)
@@ -11965,9 +9257,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess_32.h linux-2.6.39.3/arch/
return n;
}
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess_64.h linux-2.6.39.3/arch/x86/include/asm/uaccess_64.h
---- linux-2.6.39.3/arch/x86/include/asm/uaccess_64.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/uaccess_64.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/uaccess_64.h linux-2.6.39.4/arch/x86/include/asm/uaccess_64.h
+--- linux-2.6.39.4/arch/x86/include/asm/uaccess_64.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/uaccess_64.h 2011-08-05 19:44:33.000000000 -0400
@@ -11,6 +11,9 @@
#include <asm/alternative.h>
#include <asm/cpufeature.h>
@@ -12372,9 +9664,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess_64.h linux-2.6.39.3/arch/
copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest);
#endif /* _ASM_X86_UACCESS_64_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess.h linux-2.6.39.3/arch/x86/include/asm/uaccess.h
---- linux-2.6.39.3/arch/x86/include/asm/uaccess.h 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/uaccess.h 2011-06-03 00:32:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/uaccess.h linux-2.6.39.4/arch/x86/include/asm/uaccess.h
+--- linux-2.6.39.4/arch/x86/include/asm/uaccess.h 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/uaccess.h 2011-08-05 19:44:33.000000000 -0400
@@ -8,12 +8,15 @@
#include <linux/thread_info.h>
#include <linux/prefetch.h>
@@ -12593,9 +9885,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/uaccess.h linux-2.6.39.3/arch/x86
#ifdef CONFIG_X86_32
# include "uaccess_32.h"
#else
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/vgtod.h linux-2.6.39.3/arch/x86/include/asm/vgtod.h
---- linux-2.6.39.3/arch/x86/include/asm/vgtod.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/vgtod.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/vgtod.h linux-2.6.39.4/arch/x86/include/asm/vgtod.h
+--- linux-2.6.39.4/arch/x86/include/asm/vgtod.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/vgtod.h 2011-08-05 19:44:33.000000000 -0400
@@ -14,6 +14,7 @@ struct vsyscall_gtod_data {
int sysctl_enabled;
struct timezone sys_tz;
@@ -12604,9 +9896,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/vgtod.h linux-2.6.39.3/arch/x86/i
cycle_t (*vread)(void);
cycle_t cycle_last;
cycle_t mask;
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/vsyscall.h linux-2.6.39.3/arch/x86/include/asm/vsyscall.h
---- linux-2.6.39.3/arch/x86/include/asm/vsyscall.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/vsyscall.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/vsyscall.h linux-2.6.39.4/arch/x86/include/asm/vsyscall.h
+--- linux-2.6.39.4/arch/x86/include/asm/vsyscall.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/vsyscall.h 2011-08-05 19:44:33.000000000 -0400
@@ -15,9 +15,10 @@ enum vsyscall_num {
#ifdef __KERNEL__
@@ -12637,21 +9929,129 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/vsyscall.h linux-2.6.39.3/arch/x8
#endif /* __KERNEL__ */
#endif /* _ASM_X86_VSYSCALL_H */
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/xen/pci.h linux-2.6.39.3/arch/x86/include/asm/xen/pci.h
---- linux-2.6.39.3/arch/x86/include/asm/xen/pci.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/xen/pci.h 2011-05-22 19:36:30.000000000 -0400
-@@ -33,7 +33,7 @@ struct xen_pci_frontend_ops {
- void (*disable_msix)(struct pci_dev *dev);
- };
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/x86_init.h linux-2.6.39.4/arch/x86/include/asm/x86_init.h
+--- linux-2.6.39.4/arch/x86/include/asm/x86_init.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/x86_init.h 2011-08-05 20:34:06.000000000 -0400
+@@ -28,7 +28,7 @@ struct x86_init_mpparse {
+ void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
+ void (*find_smp_config)(void);
+ void (*get_smp_config)(unsigned int early);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_resources - platform specific resource related ops
+@@ -42,7 +42,7 @@ struct x86_init_resources {
+ void (*probe_roms)(void);
+ void (*reserve_resources)(void);
+ char *(*memory_setup)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_irqs - platform specific interrupt setup
+@@ -55,7 +55,7 @@ struct x86_init_irqs {
+ void (*pre_vector_init)(void);
+ void (*intr_init)(void);
+ void (*trap_init)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_oem - oem platform specific customizing functions
+@@ -65,7 +65,7 @@ struct x86_init_irqs {
+ struct x86_init_oem {
+ void (*arch_setup)(void);
+ void (*banner)(void);
+-};
++} __no_const;
--extern struct xen_pci_frontend_ops *xen_pci_frontend;
-+extern const struct xen_pci_frontend_ops *xen_pci_frontend;
+ /**
+ * struct x86_init_mapping - platform specific initial kernel pagetable setup
+@@ -76,7 +76,7 @@ struct x86_init_oem {
+ */
+ struct x86_init_mapping {
+ void (*pagetable_reserve)(u64 start, u64 end);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_paging - platform specific paging functions
+@@ -86,7 +86,7 @@ struct x86_init_mapping {
+ struct x86_init_paging {
+ void (*pagetable_setup_start)(pgd_t *base);
+ void (*pagetable_setup_done)(pgd_t *base);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_timers - platform specific timer setup
+@@ -101,7 +101,7 @@ struct x86_init_timers {
+ void (*tsc_pre_init)(void);
+ void (*timer_init)(void);
+ void (*wallclock_init)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_iommu - platform specific iommu setup
+@@ -109,7 +109,7 @@ struct x86_init_timers {
+ */
+ struct x86_init_iommu {
+ int (*iommu_init)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_pci - platform specific pci init functions
+@@ -123,7 +123,7 @@ struct x86_init_pci {
+ int (*init)(void);
+ void (*init_irq)(void);
+ void (*fixup_irqs)(void);
+-};
++} __no_const;
+
+ /**
+ * struct x86_init_ops - functions for platform specific setup
+@@ -139,7 +139,7 @@ struct x86_init_ops {
+ struct x86_init_timers timers;
+ struct x86_init_iommu iommu;
+ struct x86_init_pci pci;
+-};
++} __no_const;
+
+ /**
+ * struct x86_cpuinit_ops - platform specific cpu hotplug setups
+@@ -147,7 +147,7 @@ struct x86_init_ops {
+ */
+ struct x86_cpuinit_ops {
+ void (*setup_percpu_clockev)(void);
+-};
++} __no_const;
- static inline int xen_pci_frontend_enable_msi(struct pci_dev *dev,
- int vectors[])
-diff -urNp linux-2.6.39.3/arch/x86/include/asm/xsave.h linux-2.6.39.3/arch/x86/include/asm/xsave.h
---- linux-2.6.39.3/arch/x86/include/asm/xsave.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/include/asm/xsave.h 2011-05-22 19:36:30.000000000 -0400
+ /**
+ * struct x86_platform_ops - platform specific runtime functions
+@@ -166,7 +166,7 @@ struct x86_platform_ops {
+ bool (*is_untracked_pat_range)(u64 start, u64 end);
+ void (*nmi_init)(void);
+ int (*i8042_detect)(void);
+-};
++} __no_const;
+
+ struct pci_dev;
+
+@@ -174,7 +174,7 @@ struct x86_msi_ops {
+ int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
+ void (*teardown_msi_irq)(unsigned int irq);
+ void (*teardown_msi_irqs)(struct pci_dev *dev);
+-};
++} __no_const;
+
+ extern struct x86_init_ops x86_init;
+ extern struct x86_cpuinit_ops x86_cpuinit;
+diff -urNp linux-2.6.39.4/arch/x86/include/asm/xsave.h linux-2.6.39.4/arch/x86/include/asm/xsave.h
+--- linux-2.6.39.4/arch/x86/include/asm/xsave.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/include/asm/xsave.h 2011-08-05 19:44:33.000000000 -0400
@@ -65,6 +65,11 @@ static inline int xsave_user(struct xsav
{
int err;
@@ -12676,9 +10076,9 @@ diff -urNp linux-2.6.39.3/arch/x86/include/asm/xsave.h linux-2.6.39.3/arch/x86/i
__asm__ __volatile__("1: .byte " REX_PREFIX "0x0f,0xae,0x2f\n"
"2:\n"
".section .fixup,\"ax\"\n"
-diff -urNp linux-2.6.39.3/arch/x86/Kconfig linux-2.6.39.3/arch/x86/Kconfig
---- linux-2.6.39.3/arch/x86/Kconfig 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/Kconfig 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/Kconfig linux-2.6.39.4/arch/x86/Kconfig
+--- linux-2.6.39.4/arch/x86/Kconfig 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/Kconfig 2011-08-05 19:44:33.000000000 -0400
@@ -224,7 +224,7 @@ config X86_HT
config X86_32_LAZY_GS
@@ -12760,9 +10160,9 @@ diff -urNp linux-2.6.39.3/arch/x86/Kconfig linux-2.6.39.3/arch/x86/Kconfig
---help---
Map the 32-bit VDSO to the predictable old-style address too.
-diff -urNp linux-2.6.39.3/arch/x86/Kconfig.cpu linux-2.6.39.3/arch/x86/Kconfig.cpu
---- linux-2.6.39.3/arch/x86/Kconfig.cpu 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/Kconfig.cpu 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/Kconfig.cpu linux-2.6.39.4/arch/x86/Kconfig.cpu
+--- linux-2.6.39.4/arch/x86/Kconfig.cpu 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/Kconfig.cpu 2011-08-05 19:44:33.000000000 -0400
@@ -334,7 +334,7 @@ config X86_PPRO_FENCE
config X86_F00F_BUG
@@ -12790,9 +10190,9 @@ diff -urNp linux-2.6.39.3/arch/x86/Kconfig.cpu linux-2.6.39.3/arch/x86/Kconfig.c
config X86_MINIMUM_CPU_FAMILY
int
-diff -urNp linux-2.6.39.3/arch/x86/Kconfig.debug linux-2.6.39.3/arch/x86/Kconfig.debug
---- linux-2.6.39.3/arch/x86/Kconfig.debug 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/Kconfig.debug 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/Kconfig.debug linux-2.6.39.4/arch/x86/Kconfig.debug
+--- linux-2.6.39.4/arch/x86/Kconfig.debug 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/Kconfig.debug 2011-08-05 19:44:33.000000000 -0400
@@ -101,7 +101,7 @@ config X86_PTDUMP
config DEBUG_RODATA
bool "Write protect kernel read-only data structures"
@@ -12811,9 +10211,22 @@ diff -urNp linux-2.6.39.3/arch/x86/Kconfig.debug linux-2.6.39.3/arch/x86/Kconfig
---help---
This option helps catch unintended modifications to loadable
kernel module's text and read-only data. It also prevents execution
-diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.39.3/arch/x86/kernel/acpi/realmode/wakeup.S
---- linux-2.6.39.3/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-09 09:18:51.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-09 09:19:18.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/acpi/realmode/Makefile linux-2.6.39.4/arch/x86/kernel/acpi/realmode/Makefile
+--- linux-2.6.39.4/arch/x86/kernel/acpi/realmode/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/acpi/realmode/Makefile 2011-08-05 20:34:06.000000000 -0400
+@@ -41,6 +41,9 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os
+ $(call cc-option, -fno-stack-protector) \
+ $(call cc-option, -mpreferred-stack-boundary=2)
+ KBUILD_CFLAGS += $(call cc-option, -m32)
++ifdef CONSTIFY_PLUGIN
++KBUILD_CFLAGS += $(CONSTIFY_PLUGIN) -fplugin-arg-constify_plugin-no-constify
++endif
+ KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
+ GCOV_PROFILE := n
+
+diff -urNp linux-2.6.39.4/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.39.4/arch/x86/kernel/acpi/realmode/wakeup.S
+--- linux-2.6.39.4/arch/x86/kernel/acpi/realmode/wakeup.S 2011-07-09 09:18:51.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/acpi/realmode/wakeup.S 2011-08-05 19:44:33.000000000 -0400
@@ -108,6 +108,9 @@ wakeup_code:
/* Do any other stuff... */
@@ -12832,9 +10245,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/realmode/wakeup.S linux-2.6.39.3/
#else
pushw $0
pushw trampoline_segment
-diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/sleep.c linux-2.6.39.3/arch/x86/kernel/acpi/sleep.c
---- linux-2.6.39.3/arch/x86/kernel/acpi/sleep.c 2011-07-09 09:18:51.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/acpi/sleep.c 2011-07-09 09:19:18.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/acpi/sleep.c linux-2.6.39.4/arch/x86/kernel/acpi/sleep.c
+--- linux-2.6.39.4/arch/x86/kernel/acpi/sleep.c 2011-07-09 09:18:51.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/acpi/sleep.c 2011-08-05 19:44:33.000000000 -0400
@@ -94,8 +94,12 @@ int acpi_suspend_lowlevel(void)
header->trampoline_segment = trampoline_address() >> 4;
#ifdef CONFIG_SMP
@@ -12848,9 +10261,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/sleep.c linux-2.6.39.3/arch/x86/k
initial_gs = per_cpu_offset(smp_processor_id());
#endif
initial_code = (unsigned long)wakeup_long64;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.39.3/arch/x86/kernel/acpi/wakeup_32.S
---- linux-2.6.39.3/arch/x86/kernel/acpi/wakeup_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/acpi/wakeup_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.39.4/arch/x86/kernel/acpi/wakeup_32.S
+--- linux-2.6.39.4/arch/x86/kernel/acpi/wakeup_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/acpi/wakeup_32.S 2011-08-05 19:44:33.000000000 -0400
@@ -30,13 +30,11 @@ wakeup_pmode_return:
# and restore the stack ... but you need gdt for this to work
movl saved_context_esp, %esp
@@ -12867,9 +10280,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/acpi/wakeup_32.S linux-2.6.39.3/arch/x
bogus_magic:
jmp bogus_magic
-diff -urNp linux-2.6.39.3/arch/x86/kernel/alternative.c linux-2.6.39.3/arch/x86/kernel/alternative.c
---- linux-2.6.39.3/arch/x86/kernel/alternative.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/alternative.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/alternative.c linux-2.6.39.4/arch/x86/kernel/alternative.c
+--- linux-2.6.39.4/arch/x86/kernel/alternative.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/alternative.c 2011-08-05 19:44:33.000000000 -0400
@@ -248,7 +248,7 @@ static void alternatives_smp_lock(const
if (!*poff || ptr < text || ptr >= text_end)
continue;
@@ -12983,39 +10396,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/alternative.c linux-2.6.39.3/arch/x86/
#endif
void __init arch_init_ideal_nop5(void)
-diff -urNp linux-2.6.39.3/arch/x86/kernel/amd_iommu.c linux-2.6.39.3/arch/x86/kernel/amd_iommu.c
---- linux-2.6.39.3/arch/x86/kernel/amd_iommu.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/amd_iommu.c 2011-06-25 13:00:25.000000000 -0400
-@@ -49,7 +49,7 @@ static DEFINE_SPINLOCK(iommu_pd_list_loc
- */
- static struct protection_domain *pt_domain;
-
--static struct iommu_ops amd_iommu_ops;
-+static const struct iommu_ops amd_iommu_ops;
-
- /*
- * general struct to manage commands send to an IOMMU
-@@ -2307,7 +2307,7 @@ static void prealloc_protection_domains(
- }
- }
-
--static struct dma_map_ops amd_iommu_dma_ops = {
-+static const struct dma_map_ops amd_iommu_dma_ops = {
- .alloc_coherent = alloc_coherent,
- .free_coherent = free_coherent,
- .map_page = map_page,
-@@ -2624,7 +2624,7 @@ static int amd_iommu_domain_has_cap(stru
- return 0;
- }
-
--static struct iommu_ops amd_iommu_ops = {
-+static const struct iommu_ops amd_iommu_ops = {
- .domain_init = amd_iommu_domain_init,
- .domain_destroy = amd_iommu_domain_destroy,
- .attach_dev = amd_iommu_attach_device,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/apic/apic.c linux-2.6.39.3/arch/x86/kernel/apic/apic.c
---- linux-2.6.39.3/arch/x86/kernel/apic/apic.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/apic/apic.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/apic/apic.c linux-2.6.39.4/arch/x86/kernel/apic/apic.c
+--- linux-2.6.39.4/arch/x86/kernel/apic/apic.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/apic/apic.c 2011-08-05 19:44:33.000000000 -0400
@@ -1821,7 +1821,7 @@ void smp_error_interrupt(struct pt_regs
apic_write(APIC_ESR, 0);
v1 = apic_read(APIC_ESR);
@@ -13034,9 +10417,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/apic/apic.c linux-2.6.39.3/arch/x86/ke
bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/apic/io_apic.c linux-2.6.39.3/arch/x86/kernel/apic/io_apic.c
---- linux-2.6.39.3/arch/x86/kernel/apic/io_apic.c 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/apic/io_apic.c 2011-06-03 00:42:37.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/apic/io_apic.c linux-2.6.39.4/arch/x86/kernel/apic/io_apic.c
+--- linux-2.6.39.4/arch/x86/kernel/apic/io_apic.c 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/apic/io_apic.c 2011-08-05 19:44:33.000000000 -0400
@@ -623,7 +623,7 @@ struct IO_APIC_route_entry **alloc_ioapi
ioapic_entries = kzalloc(sizeof(*ioapic_entries) * nr_ioapics,
GFP_ATOMIC);
@@ -13091,9 +10474,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/apic/io_apic.c linux-2.6.39.3/arch/x86
eoi_ioapic_irq(irq, cfg);
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/apm_32.c linux-2.6.39.3/arch/x86/kernel/apm_32.c
---- linux-2.6.39.3/arch/x86/kernel/apm_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/apm_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/apm_32.c linux-2.6.39.4/arch/x86/kernel/apm_32.c
+--- linux-2.6.39.4/arch/x86/kernel/apm_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/apm_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -412,7 +412,7 @@ static DEFINE_MUTEX(apm_mutex);
* This is for buggy BIOS's that refer to (real mode) segment 0x40
* even though they are called in protected mode.
@@ -13165,9 +10548,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/apm_32.c linux-2.6.39.3/arch/x86/kerne
proc_create("apm", 0, NULL, &apm_file_ops);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/asm-offsets_64.c linux-2.6.39.3/arch/x86/kernel/asm-offsets_64.c
---- linux-2.6.39.3/arch/x86/kernel/asm-offsets_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/asm-offsets_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/asm-offsets_64.c linux-2.6.39.4/arch/x86/kernel/asm-offsets_64.c
+--- linux-2.6.39.4/arch/x86/kernel/asm-offsets_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/asm-offsets_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -69,6 +69,7 @@ int main(void)
BLANK();
#undef ENTRY
@@ -13176,9 +10559,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/asm-offsets_64.c linux-2.6.39.3/arch/x
OFFSET(TSS_ist, tss_struct, x86_tss.ist);
BLANK();
-diff -urNp linux-2.6.39.3/arch/x86/kernel/asm-offsets.c linux-2.6.39.3/arch/x86/kernel/asm-offsets.c
---- linux-2.6.39.3/arch/x86/kernel/asm-offsets.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/asm-offsets.c 2011-05-25 17:35:48.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/asm-offsets.c linux-2.6.39.4/arch/x86/kernel/asm-offsets.c
+--- linux-2.6.39.4/arch/x86/kernel/asm-offsets.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/asm-offsets.c 2011-08-05 19:44:33.000000000 -0400
@@ -33,6 +33,8 @@ void common(void) {
OFFSET(TI_status, thread_info, status);
OFFSET(TI_addr_limit, thread_info, addr_limit);
@@ -13215,9 +10598,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/asm-offsets.c linux-2.6.39.3/arch/x86/
#ifdef CONFIG_XEN
BLANK();
OFFSET(XEN_vcpu_info_mask, vcpu_info, evtchn_upcall_mask);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/amd.c linux-2.6.39.3/arch/x86/kernel/cpu/amd.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/amd.c 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/amd.c 2011-06-03 00:32:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/amd.c linux-2.6.39.4/arch/x86/kernel/cpu/amd.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/amd.c 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/amd.c 2011-08-05 19:44:33.000000000 -0400
@@ -647,7 +647,7 @@ static unsigned int __cpuinit amd_size_c
unsigned int size)
{
@@ -13227,9 +10610,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/amd.c linux-2.6.39.3/arch/x86/kern
/* Duron Rev A0 */
if (c->x86_model == 3 && c->x86_mask == 0)
size = 64;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/common.c linux-2.6.39.3/arch/x86/kernel/cpu/common.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/common.c 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/common.c 2011-06-03 00:32:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/common.c linux-2.6.39.4/arch/x86/kernel/cpu/common.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/common.c 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/common.c 2011-08-05 19:44:33.000000000 -0400
@@ -83,60 +83,6 @@ static const struct cpu_dev __cpuinitcon
static const struct cpu_dev *this_cpu __cpuinitdata = &default_cpu;
@@ -13374,9 +10757,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/common.c linux-2.6.39.3/arch/x86/k
struct thread_struct *thread = &curr->thread;
if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/intel.c linux-2.6.39.3/arch/x86/kernel/cpu/intel.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/intel.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/intel.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/intel.c linux-2.6.39.4/arch/x86/kernel/cpu/intel.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/intel.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/intel.c 2011-08-05 19:44:33.000000000 -0400
@@ -161,7 +161,7 @@ static void __cpuinit trap_init_f00f_bug
* Update the IDT descriptor and reload the IDT so that
* it uses the read-only mapped virtual address.
@@ -13386,9 +10769,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/intel.c linux-2.6.39.3/arch/x86/ke
load_idt(&idt_descr);
}
#endif
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/Makefile linux-2.6.39.3/arch/x86/kernel/cpu/Makefile
---- linux-2.6.39.3/arch/x86/kernel/cpu/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/Makefile 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/Makefile linux-2.6.39.4/arch/x86/kernel/cpu/Makefile
+--- linux-2.6.39.4/arch/x86/kernel/cpu/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/Makefile 2011-08-05 19:44:33.000000000 -0400
@@ -8,10 +8,6 @@ CFLAGS_REMOVE_common.o = -pg
CFLAGS_REMOVE_perf_event.o = -pg
endif
@@ -13400,9 +10783,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/Makefile linux-2.6.39.3/arch/x86/k
obj-y := intel_cacheinfo.o scattered.o topology.o
obj-y += proc.o capflags.o powerflags.o common.o
obj-y += vmware.o hypervisor.o sched.o mshyperv.o
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.39.3/arch/x86/kernel/cpu/mcheck/mce.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/mcheck/mce.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/mcheck/mce.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce.c 2011-08-05 19:44:33.000000000 -0400
@@ -46,6 +46,7 @@
#include <asm/ipi.h>
#include <asm/mce.h>
@@ -13504,9 +10887,23 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/mcheck/mce.c linux-2.6.39.3/arch/x
atomic_set(&mce_executing, 0);
atomic_set(&mce_callin, 0);
atomic_set(&global_nwo, 0);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/main.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/main.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/main.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce-inject.c linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce-inject.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/mcheck/mce-inject.c 2011-08-05 20:34:06.000000000 -0400
+@@ -215,7 +215,9 @@ static int inject_init(void)
+ if (!alloc_cpumask_var(&mce_inject_cpumask, GFP_KERNEL))
+ return -ENOMEM;
+ printk(KERN_INFO "Machine check injector initialized\n");
+- mce_chrdev_ops.write = mce_write;
++ pax_open_kernel();
++ *(void **)&mce_chrdev_ops.write = mce_write;
++ pax_close_kernel();
+ register_die_notifier(&mce_raise_nb);
+ return 0;
+ }
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/main.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/main.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/main.c 2011-08-05 19:44:33.000000000 -0400
@@ -62,7 +62,7 @@ static DEFINE_MUTEX(mtrr_mutex);
u64 size_or_mask, size_and_mask;
static bool mtrr_aps_delayed_init;
@@ -13516,40 +10913,23 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.39.3/arch/x8
const struct mtrr_ops *mtrr_if;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/mtrr.h
---- linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-05-22 19:36:30.000000000 -0400
-@@ -12,19 +12,19 @@
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/mtrr.h linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/mtrr.h
+--- linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/mtrr/mtrr.h 2011-08-05 20:34:06.000000000 -0400
+@@ -12,8 +12,8 @@
extern unsigned int mtrr_usage_table[MTRR_MAX_VAR_RANGES];
struct mtrr_ops {
- u32 vendor;
- u32 use_intel_if;
-- void (*set)(unsigned int reg, unsigned long base,
+ const u32 vendor;
+ const u32 use_intel_if;
-+ void (* const set)(unsigned int reg, unsigned long base,
+ void (*set)(unsigned int reg, unsigned long base,
unsigned long size, mtrr_type type);
-- void (*set_all)(void);
-+ void (* const set_all)(void);
-
-- void (*get)(unsigned int reg, unsigned long *base,
-+ void (* const get)(unsigned int reg, unsigned long *base,
- unsigned long *size, mtrr_type *type);
-- int (*get_free_region)(unsigned long base, unsigned long size,
-+ int (* const get_free_region)(unsigned long base, unsigned long size,
- int replace_reg);
-- int (*validate_add_page)(unsigned long base, unsigned long size,
-+ int (* const validate_add_page)(unsigned long base, unsigned long size,
- unsigned int type);
-- int (*have_wrcomb)(void);
-+ int (* const have_wrcomb)(void);
- };
-
- extern int generic_get_free_region(unsigned long base, unsigned long size,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/perf_event.c linux-2.6.39.3/arch/x86/kernel/cpu/perf_event.c
---- linux-2.6.39.3/arch/x86/kernel/cpu/perf_event.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/cpu/perf_event.c 2011-05-22 19:36:30.000000000 -0400
+ void (*set_all)(void);
+diff -urNp linux-2.6.39.4/arch/x86/kernel/cpu/perf_event.c linux-2.6.39.4/arch/x86/kernel/cpu/perf_event.c
+--- linux-2.6.39.4/arch/x86/kernel/cpu/perf_event.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/cpu/perf_event.c 2011-08-05 19:44:33.000000000 -0400
@@ -774,6 +774,8 @@ static int x86_schedule_events(struct cp
int i, j, w, wmax, num = 0;
struct hw_perf_event *hwc;
@@ -13568,9 +10948,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/cpu/perf_event.c linux-2.6.39.3/arch/x
}
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/crash.c linux-2.6.39.3/arch/x86/kernel/crash.c
---- linux-2.6.39.3/arch/x86/kernel/crash.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/crash.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/crash.c linux-2.6.39.4/arch/x86/kernel/crash.c
+--- linux-2.6.39.4/arch/x86/kernel/crash.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/crash.c 2011-08-05 19:44:33.000000000 -0400
@@ -42,7 +42,7 @@ static void kdump_nmi_callback(int cpu,
regs = args->regs;
@@ -13580,9 +10960,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/crash.c linux-2.6.39.3/arch/x86/kernel
crash_fixup_ss_esp(&fixed_regs, regs);
regs = &fixed_regs;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/doublefault_32.c linux-2.6.39.3/arch/x86/kernel/doublefault_32.c
---- linux-2.6.39.3/arch/x86/kernel/doublefault_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/doublefault_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/doublefault_32.c linux-2.6.39.4/arch/x86/kernel/doublefault_32.c
+--- linux-2.6.39.4/arch/x86/kernel/doublefault_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/doublefault_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -11,7 +11,7 @@
#define DOUBLEFAULT_STACKSIZE (1024)
@@ -13614,9 +10994,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/doublefault_32.c linux-2.6.39.3/arch/x
.fs = __KERNEL_PERCPU,
.__cr3 = __pa_nodebug(swapper_pg_dir),
-diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack_32.c linux-2.6.39.3/arch/x86/kernel/dumpstack_32.c
---- linux-2.6.39.3/arch/x86/kernel/dumpstack_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/dumpstack_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/dumpstack_32.c linux-2.6.39.4/arch/x86/kernel/dumpstack_32.c
+--- linux-2.6.39.4/arch/x86/kernel/dumpstack_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/dumpstack_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -38,15 +38,13 @@ void dump_trace(struct task_struct *task
bp = stack_frame(task, regs);
@@ -13680,9 +11060,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack_32.c linux-2.6.39.3/arch/x86
if (ip < PAGE_OFFSET)
return 0;
if (probe_kernel_address((unsigned short *)ip, ud2))
-diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack_64.c linux-2.6.39.3/arch/x86/kernel/dumpstack_64.c
---- linux-2.6.39.3/arch/x86/kernel/dumpstack_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/dumpstack_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/dumpstack_64.c linux-2.6.39.4/arch/x86/kernel/dumpstack_64.c
+--- linux-2.6.39.4/arch/x86/kernel/dumpstack_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/dumpstack_64.c 2011-08-05 19:44:33.000000000 -0400
@@ -147,9 +147,9 @@ void dump_trace(struct task_struct *task
unsigned long *irq_stack_end =
(unsigned long *)per_cpu(irq_stack_ptr, cpu);
@@ -13734,9 +11114,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack_64.c linux-2.6.39.3/arch/x86
put_cpu();
}
EXPORT_SYMBOL(dump_trace);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack.c linux-2.6.39.3/arch/x86/kernel/dumpstack.c
---- linux-2.6.39.3/arch/x86/kernel/dumpstack.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/dumpstack.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/dumpstack.c linux-2.6.39.4/arch/x86/kernel/dumpstack.c
+--- linux-2.6.39.4/arch/x86/kernel/dumpstack.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/dumpstack.c 2011-08-05 19:44:33.000000000 -0400
@@ -2,6 +2,9 @@
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs
@@ -13880,9 +11260,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/dumpstack.c linux-2.6.39.3/arch/x86/ke
report_bug(regs->ip, regs);
if (__die(str, regs, err))
-diff -urNp linux-2.6.39.3/arch/x86/kernel/early_printk.c linux-2.6.39.3/arch/x86/kernel/early_printk.c
---- linux-2.6.39.3/arch/x86/kernel/early_printk.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/early_printk.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/early_printk.c linux-2.6.39.4/arch/x86/kernel/early_printk.c
+--- linux-2.6.39.4/arch/x86/kernel/early_printk.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/early_printk.c 2011-08-05 19:44:33.000000000 -0400
@@ -7,6 +7,7 @@
#include <linux/pci_regs.h>
#include <linux/pci_ids.h>
@@ -13900,9 +11280,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/early_printk.c linux-2.6.39.3/arch/x86
va_start(ap, fmt);
n = vscnprintf(buf, sizeof(buf), fmt, ap);
early_console->write(early_console, buf, n);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/entry_32.S linux-2.6.39.3/arch/x86/kernel/entry_32.S
---- linux-2.6.39.3/arch/x86/kernel/entry_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/entry_32.S 2011-05-23 17:07:00.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/entry_32.S linux-2.6.39.4/arch/x86/kernel/entry_32.S
+--- linux-2.6.39.4/arch/x86/kernel/entry_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/entry_32.S 2011-08-05 19:44:33.000000000 -0400
@@ -185,13 +185,146 @@
/*CFI_REL_OFFSET gs, PT_GS*/
.endm
@@ -14385,9 +11765,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/entry_32.S linux-2.6.39.3/arch/x86/ker
RESTORE_REGS
lss 12+4(%esp), %esp # back to espfix stack
CFI_ADJUST_CFA_OFFSET -24
-diff -urNp linux-2.6.39.3/arch/x86/kernel/entry_64.S linux-2.6.39.3/arch/x86/kernel/entry_64.S
---- linux-2.6.39.3/arch/x86/kernel/entry_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/entry_64.S 2011-05-23 17:10:49.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/entry_64.S linux-2.6.39.4/arch/x86/kernel/entry_64.S
+--- linux-2.6.39.4/arch/x86/kernel/entry_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/entry_64.S 2011-08-05 19:44:33.000000000 -0400
@@ -53,6 +53,7 @@
#include <asm/paravirt.h>
#include <asm/ftrace.h>
@@ -14960,9 +12340,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/entry_64.S linux-2.6.39.3/arch/x86/ker
RESTORE_ALL 8
jmp irq_return
nmi_userspace:
-diff -urNp linux-2.6.39.3/arch/x86/kernel/ftrace.c linux-2.6.39.3/arch/x86/kernel/ftrace.c
---- linux-2.6.39.3/arch/x86/kernel/ftrace.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/ftrace.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/ftrace.c linux-2.6.39.4/arch/x86/kernel/ftrace.c
+--- linux-2.6.39.4/arch/x86/kernel/ftrace.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/ftrace.c 2011-08-05 19:44:33.000000000 -0400
@@ -126,7 +126,7 @@ static void *mod_code_ip; /* holds the
static void *mod_code_newcode; /* holds the text to write to the IP */
@@ -15020,9 +12400,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/ftrace.c linux-2.6.39.3/arch/x86/kerne
if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE))
return -EFAULT;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/head32.c linux-2.6.39.3/arch/x86/kernel/head32.c
---- linux-2.6.39.3/arch/x86/kernel/head32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/head32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/head32.c linux-2.6.39.4/arch/x86/kernel/head32.c
+--- linux-2.6.39.4/arch/x86/kernel/head32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/head32.c 2011-08-05 19:44:33.000000000 -0400
@@ -19,6 +19,7 @@
#include <asm/io_apic.h>
#include <asm/bios_ebda.h>
@@ -15040,9 +12420,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/head32.c linux-2.6.39.3/arch/x86/kerne
#ifdef CONFIG_BLK_DEV_INITRD
/* Reserve INITRD */
-diff -urNp linux-2.6.39.3/arch/x86/kernel/head_32.S linux-2.6.39.3/arch/x86/kernel/head_32.S
---- linux-2.6.39.3/arch/x86/kernel/head_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/head_32.S 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/head_32.S linux-2.6.39.4/arch/x86/kernel/head_32.S
+--- linux-2.6.39.4/arch/x86/kernel/head_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/head_32.S 2011-08-05 19:44:33.000000000 -0400
@@ -25,6 +25,12 @@
/* Physical address */
#define pa(X) ((X) - __PAGE_OFFSET)
@@ -15477,9 +12857,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/head_32.S linux-2.6.39.3/arch/x86/kern
+ /* Be sure this is zeroed to avoid false validations in Xen */
+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0
+ .endr
-diff -urNp linux-2.6.39.3/arch/x86/kernel/head_64.S linux-2.6.39.3/arch/x86/kernel/head_64.S
---- linux-2.6.39.3/arch/x86/kernel/head_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/head_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/head_64.S linux-2.6.39.4/arch/x86/kernel/head_64.S
+--- linux-2.6.39.4/arch/x86/kernel/head_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/head_64.S 2011-08-05 19:44:33.000000000 -0400
@@ -19,6 +19,7 @@
#include <asm/cache.h>
#include <asm/processor-flags.h>
@@ -15749,9 +13129,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/head_64.S linux-2.6.39.3/arch/x86/kern
__PAGE_ALIGNED_BSS
.align PAGE_SIZE
-diff -urNp linux-2.6.39.3/arch/x86/kernel/i386_ksyms_32.c linux-2.6.39.3/arch/x86/kernel/i386_ksyms_32.c
---- linux-2.6.39.3/arch/x86/kernel/i386_ksyms_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/i386_ksyms_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/i386_ksyms_32.c linux-2.6.39.4/arch/x86/kernel/i386_ksyms_32.c
+--- linux-2.6.39.4/arch/x86/kernel/i386_ksyms_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/i386_ksyms_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -20,8 +20,12 @@ extern void cmpxchg8b_emu(void);
EXPORT_SYMBOL(cmpxchg8b_emu);
#endif
@@ -15773,9 +13153,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/i386_ksyms_32.c linux-2.6.39.3/arch/x8
+#ifdef CONFIG_PAX_KERNEXEC
+EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR);
+#endif
-diff -urNp linux-2.6.39.3/arch/x86/kernel/i8259.c linux-2.6.39.3/arch/x86/kernel/i8259.c
---- linux-2.6.39.3/arch/x86/kernel/i8259.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/i8259.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/i8259.c linux-2.6.39.4/arch/x86/kernel/i8259.c
+--- linux-2.6.39.4/arch/x86/kernel/i8259.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/i8259.c 2011-08-05 19:44:33.000000000 -0400
@@ -210,7 +210,7 @@ spurious_8259A_irq:
"spurious 8259A interrupt: IRQ%d.\n", irq);
spurious_irq_mask |= irqmask;
@@ -15785,9 +13165,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/i8259.c linux-2.6.39.3/arch/x86/kernel
/*
* Theoretically we do not have to handle this IRQ,
* but in Linux this does not cause problems and is
-diff -urNp linux-2.6.39.3/arch/x86/kernel/init_task.c linux-2.6.39.3/arch/x86/kernel/init_task.c
---- linux-2.6.39.3/arch/x86/kernel/init_task.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/init_task.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/init_task.c linux-2.6.39.4/arch/x86/kernel/init_task.c
+--- linux-2.6.39.4/arch/x86/kernel/init_task.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/init_task.c 2011-08-05 19:44:33.000000000 -0400
@@ -20,8 +20,7 @@ static struct sighand_struct init_sighan
* way process stacks are handled. This is done by having a special
* "init_task" linker map entry..
@@ -15806,9 +13186,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/init_task.c linux-2.6.39.3/arch/x86/ke
-
+struct tss_struct init_tss[NR_CPUS] ____cacheline_internodealigned_in_smp = { [0 ... NR_CPUS-1] = INIT_TSS };
+EXPORT_SYMBOL(init_tss);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/ioport.c linux-2.6.39.3/arch/x86/kernel/ioport.c
---- linux-2.6.39.3/arch/x86/kernel/ioport.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/ioport.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/ioport.c linux-2.6.39.4/arch/x86/kernel/ioport.c
+--- linux-2.6.39.4/arch/x86/kernel/ioport.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/ioport.c 2011-08-05 19:44:33.000000000 -0400
@@ -6,6 +6,7 @@
#include <linux/sched.h>
#include <linux/kernel.h>
@@ -15852,9 +13232,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/ioport.c linux-2.6.39.3/arch/x86/kerne
if (!capable(CAP_SYS_RAWIO))
return -EPERM;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/irq_32.c linux-2.6.39.3/arch/x86/kernel/irq_32.c
---- linux-2.6.39.3/arch/x86/kernel/irq_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/irq_32.c 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/irq_32.c linux-2.6.39.4/arch/x86/kernel/irq_32.c
+--- linux-2.6.39.4/arch/x86/kernel/irq_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/irq_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -36,7 +36,7 @@ static int check_stack_overflow(void)
__asm__ __volatile__("andl %%esp,%0" :
"=r" (sp) : "0" (THREAD_SIZE - 1));
@@ -15994,9 +13374,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/irq_32.c linux-2.6.39.3/arch/x86/kerne
/*
* Shouldn't happen, we returned above if in_interrupt():
*/
-diff -urNp linux-2.6.39.3/arch/x86/kernel/irq.c linux-2.6.39.3/arch/x86/kernel/irq.c
---- linux-2.6.39.3/arch/x86/kernel/irq.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/irq.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/irq.c linux-2.6.39.4/arch/x86/kernel/irq.c
+--- linux-2.6.39.4/arch/x86/kernel/irq.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/irq.c 2011-08-05 19:44:33.000000000 -0400
@@ -17,7 +17,7 @@
#include <asm/mce.h>
#include <asm/hw_irq.h>
@@ -16031,9 +13411,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/irq.c linux-2.6.39.3/arch/x86/kernel/i
#endif
return sum;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/kgdb.c linux-2.6.39.3/arch/x86/kernel/kgdb.c
---- linux-2.6.39.3/arch/x86/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/kgdb.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/kgdb.c linux-2.6.39.4/arch/x86/kernel/kgdb.c
+--- linux-2.6.39.4/arch/x86/kernel/kgdb.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/kgdb.c 2011-08-05 20:34:06.000000000 -0400
@@ -124,11 +124,11 @@ char *dbg_get_reg(int regno, void *mem,
#ifdef CONFIG_X86_32
switch (regno) {
@@ -16072,18 +13452,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/kgdb.c linux-2.6.39.3/arch/x86/kernel/
if (user_mode(regs))
return single_step_cont(regs, args);
break;
-@@ -710,7 +710,7 @@ void kgdb_arch_set_pc(struct pt_regs *re
- regs->ip = ip;
- }
-
--struct kgdb_arch arch_kgdb_ops = {
-+const struct kgdb_arch arch_kgdb_ops = {
- /* Breakpoint instruction: */
- .gdb_bpt_instr = { 0xcc },
- .flags = KGDB_HW_BREAKPOINT,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/kprobes.c linux-2.6.39.3/arch/x86/kernel/kprobes.c
---- linux-2.6.39.3/arch/x86/kernel/kprobes.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/kprobes.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/kprobes.c linux-2.6.39.4/arch/x86/kernel/kprobes.c
+--- linux-2.6.39.4/arch/x86/kernel/kprobes.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/kprobes.c 2011-08-05 19:44:33.000000000 -0400
@@ -115,8 +115,11 @@ static void __kprobes __synthesize_relat
} __attribute__((packed)) *insn;
@@ -16217,9 +13588,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/kprobes.c linux-2.6.39.3/arch/x86/kern
RELATIVE_ADDR_SIZE);
insn_buf[0] = RELATIVEJUMP_OPCODE;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/ldt.c linux-2.6.39.3/arch/x86/kernel/ldt.c
---- linux-2.6.39.3/arch/x86/kernel/ldt.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/ldt.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/ldt.c linux-2.6.39.4/arch/x86/kernel/ldt.c
+--- linux-2.6.39.4/arch/x86/kernel/ldt.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/ldt.c 2011-08-05 19:44:33.000000000 -0400
@@ -67,13 +67,13 @@ static int alloc_ldt(mm_context_t *pc, i
if (reload) {
#ifdef CONFIG_SMP
@@ -16284,9 +13655,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/ldt.c linux-2.6.39.3/arch/x86/kernel/l
fill_ldt(&ldt, &ldt_info);
if (oldmode)
ldt.avl = 0;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/machine_kexec_32.c linux-2.6.39.3/arch/x86/kernel/machine_kexec_32.c
---- linux-2.6.39.3/arch/x86/kernel/machine_kexec_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/machine_kexec_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/machine_kexec_32.c linux-2.6.39.4/arch/x86/kernel/machine_kexec_32.c
+--- linux-2.6.39.4/arch/x86/kernel/machine_kexec_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/machine_kexec_32.c 2011-08-05 19:44:33.000000000 -0400
@@ -27,7 +27,7 @@
#include <asm/cacheflush.h>
#include <asm/debugreg.h>
@@ -16314,42 +13685,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/machine_kexec_32.c linux-2.6.39.3/arch
relocate_kernel_ptr = control_page;
page_list[PA_CONTROL_PAGE] = __pa(control_page);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/microcode_amd.c linux-2.6.39.3/arch/x86/kernel/microcode_amd.c
---- linux-2.6.39.3/arch/x86/kernel/microcode_amd.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/microcode_amd.c 2011-05-22 19:36:30.000000000 -0400
-@@ -339,7 +339,7 @@ static void microcode_fini_cpu_amd(int c
- uci->mc = NULL;
- }
-
--static struct microcode_ops microcode_amd_ops = {
-+static const struct microcode_ops microcode_amd_ops = {
- .request_microcode_user = request_microcode_user,
- .request_microcode_fw = request_microcode_amd,
- .collect_cpu_info = collect_cpu_info_amd,
-@@ -347,7 +347,7 @@ static struct microcode_ops microcode_am
- .microcode_fini_cpu = microcode_fini_cpu_amd,
- };
-
--struct microcode_ops * __init init_amd_microcode(void)
-+const struct microcode_ops * __init init_amd_microcode(void)
- {
- return &microcode_amd_ops;
- }
-diff -urNp linux-2.6.39.3/arch/x86/kernel/microcode_core.c linux-2.6.39.3/arch/x86/kernel/microcode_core.c
---- linux-2.6.39.3/arch/x86/kernel/microcode_core.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/microcode_core.c 2011-05-22 19:36:30.000000000 -0400
-@@ -93,7 +93,7 @@ MODULE_LICENSE("GPL");
-
- #define MICROCODE_VERSION "2.00"
-
--static struct microcode_ops *microcode_ops;
-+static const struct microcode_ops *microcode_ops;
-
- /*
- * Synchronization.
-diff -urNp linux-2.6.39.3/arch/x86/kernel/microcode_intel.c linux-2.6.39.3/arch/x86/kernel/microcode_intel.c
---- linux-2.6.39.3/arch/x86/kernel/microcode_intel.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/microcode_intel.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/microcode_intel.c linux-2.6.39.4/arch/x86/kernel/microcode_intel.c
+--- linux-2.6.39.4/arch/x86/kernel/microcode_intel.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/microcode_intel.c 2011-08-05 20:34:06.000000000 -0400
@@ -440,13 +440,13 @@ static enum ucode_state request_microcod
static int get_ucode_user(void *to, const void *from, size_t n)
@@ -16366,27 +13704,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/microcode_intel.c linux-2.6.39.3/arch/
}
static void microcode_fini_cpu(int cpu)
-@@ -457,7 +457,7 @@ static void microcode_fini_cpu(int cpu)
- uci->mc = NULL;
- }
-
--static struct microcode_ops microcode_intel_ops = {
-+static const struct microcode_ops microcode_intel_ops = {
- .request_microcode_user = request_microcode_user,
- .request_microcode_fw = request_microcode_fw,
- .collect_cpu_info = collect_cpu_info,
-@@ -465,7 +465,7 @@ static struct microcode_ops microcode_in
- .microcode_fini_cpu = microcode_fini_cpu,
- };
-
--struct microcode_ops * __init init_intel_microcode(void)
-+const struct microcode_ops * __init init_intel_microcode(void)
- {
- return &microcode_intel_ops;
- }
-diff -urNp linux-2.6.39.3/arch/x86/kernel/module.c linux-2.6.39.3/arch/x86/kernel/module.c
---- linux-2.6.39.3/arch/x86/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/module.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/module.c linux-2.6.39.4/arch/x86/kernel/module.c
+--- linux-2.6.39.4/arch/x86/kernel/module.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/module.c 2011-08-05 19:44:33.000000000 -0400
@@ -35,21 +35,66 @@
#define DEBUGP(fmt...)
#endif
@@ -16525,9 +13845,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/module.c linux-2.6.39.3/arch/x86/kerne
#if 0
if ((s64)val != *(s32 *)loc)
goto overflow;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/paravirt.c linux-2.6.39.3/arch/x86/kernel/paravirt.c
---- linux-2.6.39.3/arch/x86/kernel/paravirt.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/paravirt.c 2011-07-19 18:26:58.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/paravirt.c linux-2.6.39.4/arch/x86/kernel/paravirt.c
+--- linux-2.6.39.4/arch/x86/kernel/paravirt.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/paravirt.c 2011-08-05 19:44:33.000000000 -0400
@@ -53,6 +53,9 @@ u64 _paravirt_ident_64(u64 x)
{
return x;
@@ -16668,9 +13988,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/paravirt.c linux-2.6.39.3/arch/x86/ker
};
EXPORT_SYMBOL_GPL(pv_time_ops);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.39.3/arch/x86/kernel/paravirt-spinlocks.c
---- linux-2.6.39.3/arch/x86/kernel/paravirt-spinlocks.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/paravirt-spinlocks.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.39.4/arch/x86/kernel/paravirt-spinlocks.c
+--- linux-2.6.39.4/arch/x86/kernel/paravirt-spinlocks.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/paravirt-spinlocks.c 2011-08-05 19:44:33.000000000 -0400
@@ -13,7 +13,7 @@ default_spin_lock_flags(arch_spinlock_t
arch_spin_lock(lock);
}
@@ -16680,70 +14000,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/paravirt-spinlocks.c linux-2.6.39.3/ar
#ifdef CONFIG_SMP
.spin_is_locked = __ticket_spin_is_locked,
.spin_is_contended = __ticket_spin_is_contended,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-calgary_64.c linux-2.6.39.3/arch/x86/kernel/pci-calgary_64.c
---- linux-2.6.39.3/arch/x86/kernel/pci-calgary_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-calgary_64.c 2011-05-22 19:36:30.000000000 -0400
-@@ -179,13 +179,13 @@ static void calioc2_dump_error_regs(stru
- static void calgary_init_bitmap_from_tce_table(struct iommu_table *tbl);
- static void get_tce_space_from_tar(void);
-
--static struct cal_chipset_ops calgary_chip_ops = {
-+static const struct cal_chipset_ops calgary_chip_ops = {
- .handle_quirks = calgary_handle_quirks,
- .tce_cache_blast = calgary_tce_cache_blast,
- .dump_error_regs = calgary_dump_error_regs
- };
-
--static struct cal_chipset_ops calioc2_chip_ops = {
-+static const struct cal_chipset_ops calioc2_chip_ops = {
- .handle_quirks = calioc2_handle_quirks,
- .tce_cache_blast = calioc2_tce_cache_blast,
- .dump_error_regs = calioc2_dump_error_regs
-@@ -476,7 +476,7 @@ static void calgary_free_coherent(struct
- free_pages((unsigned long)vaddr, get_order(size));
- }
-
--static struct dma_map_ops calgary_dma_ops = {
-+static const struct dma_map_ops calgary_dma_ops = {
- .alloc_coherent = calgary_alloc_coherent,
- .free_coherent = calgary_free_coherent,
- .map_sg = calgary_map_sg,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-dma.c linux-2.6.39.3/arch/x86/kernel/pci-dma.c
---- linux-2.6.39.3/arch/x86/kernel/pci-dma.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-dma.c 2011-05-22 19:36:30.000000000 -0400
-@@ -16,7 +16,7 @@
-
- static int forbid_dac __read_mostly;
-
--struct dma_map_ops *dma_ops = &nommu_dma_ops;
-+const struct dma_map_ops *dma_ops = &nommu_dma_ops;
- EXPORT_SYMBOL(dma_ops);
-
- static int iommu_sac_force __read_mostly;
-@@ -250,7 +250,7 @@ early_param("iommu", iommu_setup);
-
- int dma_supported(struct device *dev, u64 mask)
- {
-- struct dma_map_ops *ops = get_dma_ops(dev);
-+ const struct dma_map_ops *ops = get_dma_ops(dev);
-
- #ifdef CONFIG_PCI
- if (mask > 0xffffffff && forbid_dac > 0) {
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-gart_64.c linux-2.6.39.3/arch/x86/kernel/pci-gart_64.c
---- linux-2.6.39.3/arch/x86/kernel/pci-gart_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-gart_64.c 2011-05-22 19:36:30.000000000 -0400
-@@ -695,7 +695,7 @@ static __init int init_amd_gatt(struct a
- return -1;
- }
-
--static struct dma_map_ops gart_dma_ops = {
-+static const struct dma_map_ops gart_dma_ops = {
- .map_sg = gart_map_sg,
- .unmap_sg = gart_unmap_sg,
- .map_page = gart_map_page,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-iommu_table.c linux-2.6.39.3/arch/x86/kernel/pci-iommu_table.c
---- linux-2.6.39.3/arch/x86/kernel/pci-iommu_table.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-iommu_table.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/pci-iommu_table.c linux-2.6.39.4/arch/x86/kernel/pci-iommu_table.c
+--- linux-2.6.39.4/arch/x86/kernel/pci-iommu_table.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/pci-iommu_table.c 2011-08-05 19:44:35.000000000 -0400
@@ -2,7 +2,7 @@
#include <asm/iommu_table.h>
#include <linux/string.h>
@@ -16762,33 +14021,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-iommu_table.c linux-2.6.39.3/arch/
/* Simple cyclic dependency checker. */
for (p = start; p < finish; p++) {
q = find_dependents_of(start, finish, p);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-nommu.c linux-2.6.39.3/arch/x86/kernel/pci-nommu.c
---- linux-2.6.39.3/arch/x86/kernel/pci-nommu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-nommu.c 2011-05-22 19:36:30.000000000 -0400
-@@ -95,7 +95,7 @@ static void nommu_sync_sg_for_device(str
- flush_write_buffers();
- }
-
--struct dma_map_ops nommu_dma_ops = {
-+const struct dma_map_ops nommu_dma_ops = {
- .alloc_coherent = dma_generic_alloc_coherent,
- .free_coherent = nommu_free_coherent,
- .map_sg = nommu_map_sg,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pci-swiotlb.c linux-2.6.39.3/arch/x86/kernel/pci-swiotlb.c
---- linux-2.6.39.3/arch/x86/kernel/pci-swiotlb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pci-swiotlb.c 2011-05-22 19:36:30.000000000 -0400
-@@ -26,7 +26,7 @@ static void *x86_swiotlb_alloc_coherent(
- return swiotlb_alloc_coherent(hwdev, size, dma_handle, flags);
- }
-
--static struct dma_map_ops swiotlb_dma_ops = {
-+static const struct dma_map_ops swiotlb_dma_ops = {
- .mapping_error = swiotlb_dma_mapping_error,
- .alloc_coherent = x86_swiotlb_alloc_coherent,
- .free_coherent = swiotlb_free_coherent,
-diff -urNp linux-2.6.39.3/arch/x86/kernel/process_32.c linux-2.6.39.3/arch/x86/kernel/process_32.c
---- linux-2.6.39.3/arch/x86/kernel/process_32.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/process_32.c 2011-06-25 13:00:25.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/process_32.c linux-2.6.39.4/arch/x86/kernel/process_32.c
+--- linux-2.6.39.4/arch/x86/kernel/process_32.c 2011-06-25 12:55:22.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/process_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -65,6 +65,7 @@ asmlinkage void ret_from_fork(void) __as
unsigned long thread_saved_pc(struct task_struct *tsk)
{
@@ -16875,9 +14110,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/process_32.c linux-2.6.39.3/arch/x86/k
return 0;
}
-
-diff -urNp linux-2.6.39.3/arch/x86/kernel/process_64.c linux-2.6.39.3/arch/x86/kernel/process_64.c
---- linux-2.6.39.3/arch/x86/kernel/process_64.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/process_64.c 2011-06-25 13:00:25.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/process_64.c linux-2.6.39.4/arch/x86/kernel/process_64.c
+--- linux-2.6.39.4/arch/x86/kernel/process_64.c 2011-06-25 12:55:22.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/process_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -87,7 +87,7 @@ static void __exit_idle(void)
void exit_idle(void)
{
@@ -16942,9 +14177,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/process_64.c linux-2.6.39.3/arch/x86/k
return 0;
ip = *(u64 *)(fp+8);
if (!in_sched_functions(ip))
-diff -urNp linux-2.6.39.3/arch/x86/kernel/process.c linux-2.6.39.3/arch/x86/kernel/process.c
---- linux-2.6.39.3/arch/x86/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/process.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/process.c linux-2.6.39.4/arch/x86/kernel/process.c
+--- linux-2.6.39.4/arch/x86/kernel/process.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/process.c 2011-08-05 19:44:35.000000000 -0400
@@ -48,16 +48,33 @@ void free_thread_xstate(struct task_stru
void free_thread_info(struct thread_info *ti)
@@ -17079,9 +14314,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/process.c linux-2.6.39.3/arch/x86/kern
+#endif
+}
+#endif
-diff -urNp linux-2.6.39.3/arch/x86/kernel/ptrace.c linux-2.6.39.3/arch/x86/kernel/ptrace.c
---- linux-2.6.39.3/arch/x86/kernel/ptrace.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/ptrace.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/ptrace.c linux-2.6.39.4/arch/x86/kernel/ptrace.c
+--- linux-2.6.39.4/arch/x86/kernel/ptrace.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/ptrace.c 2011-08-05 19:44:35.000000000 -0400
@@ -821,7 +821,7 @@ long arch_ptrace(struct task_struct *chi
unsigned long addr, unsigned long data)
{
@@ -17135,9 +14370,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/ptrace.c linux-2.6.39.3/arch/x86/kerne
{
bool step;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/pvclock.c linux-2.6.39.3/arch/x86/kernel/pvclock.c
---- linux-2.6.39.3/arch/x86/kernel/pvclock.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/pvclock.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/pvclock.c linux-2.6.39.4/arch/x86/kernel/pvclock.c
+--- linux-2.6.39.4/arch/x86/kernel/pvclock.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/pvclock.c 2011-08-05 19:44:35.000000000 -0400
@@ -81,11 +81,11 @@ unsigned long pvclock_tsc_khz(struct pvc
return pv_tsc_khz;
}
@@ -17166,9 +14401,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/pvclock.c linux-2.6.39.3/arch/x86/kern
} while (unlikely(last != ret));
return ret;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kernel/reboot.c
---- linux-2.6.39.3/arch/x86/kernel/reboot.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/reboot.c 2011-05-23 17:07:00.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/reboot.c linux-2.6.39.4/arch/x86/kernel/reboot.c
+--- linux-2.6.39.4/arch/x86/kernel/reboot.c 2011-08-05 21:11:51.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/reboot.c 2011-08-05 21:12:20.000000000 -0400
@@ -35,7 +35,7 @@ void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);
@@ -17249,7 +14484,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
}
#ifdef CONFIG_APM_MODULE
EXPORT_SYMBOL(machine_real_restart);
-@@ -478,7 +508,7 @@ void __attribute__((weak)) mach_reboot_f
+@@ -486,7 +516,7 @@ void __attribute__((weak)) mach_reboot_f
{
}
@@ -17258,7 +14493,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
{
int i;
-@@ -593,13 +623,13 @@ void native_machine_shutdown(void)
+@@ -601,13 +631,13 @@ void native_machine_shutdown(void)
#endif
}
@@ -17274,7 +14509,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
{
printk("machine restart\n");
-@@ -608,7 +638,7 @@ static void native_machine_restart(char
+@@ -616,7 +646,7 @@ static void native_machine_restart(char
__machine_emergency_restart(0);
}
@@ -17283,7 +14518,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
{
/* stop other cpus and apics */
machine_shutdown();
-@@ -619,7 +649,7 @@ static void native_machine_halt(void)
+@@ -627,7 +657,7 @@ static void native_machine_halt(void)
stop_this_cpu(NULL);
}
@@ -17292,7 +14527,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
{
if (pm_power_off) {
if (!reboot_force)
-@@ -628,6 +658,7 @@ static void native_machine_power_off(voi
+@@ -636,6 +666,7 @@ static void native_machine_power_off(voi
}
/* a fallback in case there is no PM info available */
tboot_shutdown(TB_SHUTDOWN_HALT);
@@ -17300,9 +14535,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/reboot.c linux-2.6.39.3/arch/x86/kerne
}
struct machine_ops machine_ops = {
-diff -urNp linux-2.6.39.3/arch/x86/kernel/setup.c linux-2.6.39.3/arch/x86/kernel/setup.c
---- linux-2.6.39.3/arch/x86/kernel/setup.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/setup.c 2011-06-25 13:00:25.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/setup.c linux-2.6.39.4/arch/x86/kernel/setup.c
+--- linux-2.6.39.4/arch/x86/kernel/setup.c 2011-06-25 12:55:22.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/setup.c 2011-08-05 19:44:35.000000000 -0400
@@ -650,7 +650,7 @@ static void __init trim_bios_range(void)
* area (640->1Mb) as ram even though it is not.
* take them out.
@@ -17332,9 +14567,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/setup.c linux-2.6.39.3/arch/x86/kernel
data_resource.end = virt_to_phys(_edata)-1;
bss_resource.start = virt_to_phys(&__bss_start);
bss_resource.end = virt_to_phys(&__bss_stop)-1;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/setup_percpu.c linux-2.6.39.3/arch/x86/kernel/setup_percpu.c
---- linux-2.6.39.3/arch/x86/kernel/setup_percpu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/setup_percpu.c 2011-06-04 20:08:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/setup_percpu.c linux-2.6.39.4/arch/x86/kernel/setup_percpu.c
+--- linux-2.6.39.4/arch/x86/kernel/setup_percpu.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/setup_percpu.c 2011-08-05 19:44:35.000000000 -0400
@@ -21,19 +21,17 @@
#include <asm/cpu.h>
#include <asm/stackprotector.h>
@@ -17398,9 +14633,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/setup_percpu.c linux-2.6.39.3/arch/x86
/*
* Up to this point, the boot CPU has been using .init.data
* area. Reload any changed state for the boot CPU.
-diff -urNp linux-2.6.39.3/arch/x86/kernel/signal.c linux-2.6.39.3/arch/x86/kernel/signal.c
---- linux-2.6.39.3/arch/x86/kernel/signal.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/signal.c 2011-05-23 17:07:00.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/signal.c linux-2.6.39.4/arch/x86/kernel/signal.c
+--- linux-2.6.39.4/arch/x86/kernel/signal.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/signal.c 2011-08-05 19:44:35.000000000 -0400
@@ -198,7 +198,7 @@ static unsigned long align_sigframe(unsi
* Align the stack pointer according to the i386 ABI,
* i.e. so that on function entry ((sp + 4) & 15) == 0.
@@ -17484,9 +14719,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/signal.c linux-2.6.39.3/arch/x86/kerne
return;
if (current_thread_info()->status & TS_RESTORE_SIGMASK)
-diff -urNp linux-2.6.39.3/arch/x86/kernel/smpboot.c linux-2.6.39.3/arch/x86/kernel/smpboot.c
---- linux-2.6.39.3/arch/x86/kernel/smpboot.c 2011-06-25 12:55:22.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/smpboot.c 2011-06-25 13:00:25.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/smpboot.c linux-2.6.39.4/arch/x86/kernel/smpboot.c
+--- linux-2.6.39.4/arch/x86/kernel/smpboot.c 2011-06-25 12:55:22.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/smpboot.c 2011-08-05 19:44:35.000000000 -0400
@@ -709,17 +709,20 @@ static int __cpuinit do_boot_cpu(int api
set_idle_for_cpu(cpu, c_idle.idle);
do_rest:
@@ -17524,9 +14759,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/smpboot.c linux-2.6.39.3/arch/x86/kern
err = do_boot_cpu(apicid, cpu);
if (err) {
pr_debug("do_boot_cpu failed %d\n", err);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/step.c linux-2.6.39.3/arch/x86/kernel/step.c
---- linux-2.6.39.3/arch/x86/kernel/step.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/step.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/step.c linux-2.6.39.4/arch/x86/kernel/step.c
+--- linux-2.6.39.4/arch/x86/kernel/step.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/step.c 2011-08-05 19:44:35.000000000 -0400
@@ -27,10 +27,10 @@ unsigned long convert_ip_to_linear(struc
struct desc_struct *desc;
unsigned long base;
@@ -17569,17 +14804,17 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/step.c linux-2.6.39.3/arch/x86/kernel/
/* 32-bit mode: register increment */
return 0;
/* 64-bit mode: REX prefix */
-diff -urNp linux-2.6.39.3/arch/x86/kernel/syscall_table_32.S linux-2.6.39.3/arch/x86/kernel/syscall_table_32.S
---- linux-2.6.39.3/arch/x86/kernel/syscall_table_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/syscall_table_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/syscall_table_32.S linux-2.6.39.4/arch/x86/kernel/syscall_table_32.S
+--- linux-2.6.39.4/arch/x86/kernel/syscall_table_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/syscall_table_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -1,3 +1,4 @@
+.section .rodata,"a",@progbits
ENTRY(sys_call_table)
.long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
.long sys_exit
-diff -urNp linux-2.6.39.3/arch/x86/kernel/sys_i386_32.c linux-2.6.39.3/arch/x86/kernel/sys_i386_32.c
---- linux-2.6.39.3/arch/x86/kernel/sys_i386_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/sys_i386_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/sys_i386_32.c linux-2.6.39.4/arch/x86/kernel/sys_i386_32.c
+--- linux-2.6.39.4/arch/x86/kernel/sys_i386_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/sys_i386_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -24,17 +24,224 @@
#include <asm/syscalls.h>
@@ -17817,9 +15052,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/sys_i386_32.c linux-2.6.39.3/arch/x86/
+
+ return addr;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/sys_x86_64.c linux-2.6.39.3/arch/x86/kernel/sys_x86_64.c
---- linux-2.6.39.3/arch/x86/kernel/sys_x86_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/sys_x86_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/sys_x86_64.c linux-2.6.39.4/arch/x86/kernel/sys_x86_64.c
+--- linux-2.6.39.4/arch/x86/kernel/sys_x86_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/sys_x86_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -32,8 +32,8 @@ out:
return error;
}
@@ -17957,9 +15192,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/sys_x86_64.c linux-2.6.39.3/arch/x86/k
mm->cached_hole_size = ~0UL;
return addr;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/tboot.c linux-2.6.39.3/arch/x86/kernel/tboot.c
---- linux-2.6.39.3/arch/x86/kernel/tboot.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/tboot.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/tboot.c linux-2.6.39.4/arch/x86/kernel/tboot.c
+--- linux-2.6.39.4/arch/x86/kernel/tboot.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/tboot.c 2011-08-05 19:44:35.000000000 -0400
@@ -218,7 +218,7 @@ static int tboot_setup_sleep(void)
void tboot_shutdown(u32 shutdown_type)
@@ -18008,9 +15243,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/tboot.c linux-2.6.39.3/arch/x86/kernel
register_hotcpu_notifier(&tboot_cpu_notifier);
return 0;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/time.c linux-2.6.39.3/arch/x86/kernel/time.c
---- linux-2.6.39.3/arch/x86/kernel/time.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/time.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/time.c linux-2.6.39.4/arch/x86/kernel/time.c
+--- linux-2.6.39.4/arch/x86/kernel/time.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/time.c 2011-08-05 19:44:35.000000000 -0400
@@ -22,17 +22,13 @@
#include <asm/hpet.h>
#include <asm/time.h>
@@ -18049,9 +15284,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/time.c linux-2.6.39.3/arch/x86/kernel/
}
return pc;
}
-diff -urNp linux-2.6.39.3/arch/x86/kernel/tls.c linux-2.6.39.3/arch/x86/kernel/tls.c
---- linux-2.6.39.3/arch/x86/kernel/tls.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/tls.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/tls.c linux-2.6.39.4/arch/x86/kernel/tls.c
+--- linux-2.6.39.4/arch/x86/kernel/tls.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/tls.c 2011-08-05 19:44:35.000000000 -0400
@@ -85,6 +85,11 @@ int do_set_thread_area(struct task_struc
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
return -EINVAL;
@@ -18064,9 +15299,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/tls.c linux-2.6.39.3/arch/x86/kernel/t
set_tls_desc(p, idx, &info, 1);
return 0;
-diff -urNp linux-2.6.39.3/arch/x86/kernel/trampoline_32.S linux-2.6.39.3/arch/x86/kernel/trampoline_32.S
---- linux-2.6.39.3/arch/x86/kernel/trampoline_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/trampoline_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/trampoline_32.S linux-2.6.39.4/arch/x86/kernel/trampoline_32.S
+--- linux-2.6.39.4/arch/x86/kernel/trampoline_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/trampoline_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -32,6 +32,12 @@
#include <asm/segment.h>
#include <asm/page_types.h>
@@ -18089,9 +15324,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/trampoline_32.S linux-2.6.39.3/arch/x8
# These need to be in the same 64K segment as the above;
# hence we don't use the boot_gdt_descr defined in head.S
-diff -urNp linux-2.6.39.3/arch/x86/kernel/trampoline_64.S linux-2.6.39.3/arch/x86/kernel/trampoline_64.S
---- linux-2.6.39.3/arch/x86/kernel/trampoline_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/trampoline_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/trampoline_64.S linux-2.6.39.4/arch/x86/kernel/trampoline_64.S
+--- linux-2.6.39.4/arch/x86/kernel/trampoline_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/trampoline_64.S 2011-08-05 19:44:35.000000000 -0400
@@ -90,7 +90,7 @@ startup_32:
movl $__KERNEL_DS, %eax # Initialize the %ds segment register
movl %eax, %ds
@@ -18110,9 +15345,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/trampoline_64.S linux-2.6.39.3/arch/x8
.long tgdt - r_base
.short 0
.quad 0x00cf9b000000ffff # __KERNEL32_CS
-diff -urNp linux-2.6.39.3/arch/x86/kernel/traps.c linux-2.6.39.3/arch/x86/kernel/traps.c
---- linux-2.6.39.3/arch/x86/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/traps.c 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/traps.c linux-2.6.39.4/arch/x86/kernel/traps.c
+--- linux-2.6.39.4/arch/x86/kernel/traps.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/traps.c 2011-08-05 19:44:35.000000000 -0400
@@ -70,12 +70,6 @@ asmlinkage int system_call(void);
/* Do we ignore FPU interrupts ? */
@@ -18292,9 +15527,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/traps.c linux-2.6.39.3/arch/x86/kernel
if (!tsk_used_math(tsk)) {
local_irq_enable();
-diff -urNp linux-2.6.39.3/arch/x86/kernel/verify_cpu.S linux-2.6.39.3/arch/x86/kernel/verify_cpu.S
---- linux-2.6.39.3/arch/x86/kernel/verify_cpu.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/verify_cpu.S 2011-07-01 18:28:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/verify_cpu.S linux-2.6.39.4/arch/x86/kernel/verify_cpu.S
+--- linux-2.6.39.4/arch/x86/kernel/verify_cpu.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/verify_cpu.S 2011-08-05 19:44:35.000000000 -0400
@@ -20,6 +20,7 @@
* arch/x86/boot/compressed/head_64.S: Boot cpu verification
* arch/x86/kernel/trampoline_64.S: secondary processor verification
@@ -18303,9 +15538,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/verify_cpu.S linux-2.6.39.3/arch/x86/k
*
* verify_cpu, returns the status of longmode and SSE in register %eax.
* 0: Success 1: Failure
-diff -urNp linux-2.6.39.3/arch/x86/kernel/vm86_32.c linux-2.6.39.3/arch/x86/kernel/vm86_32.c
---- linux-2.6.39.3/arch/x86/kernel/vm86_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/vm86_32.c 2011-05-22 19:41:32.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/vm86_32.c linux-2.6.39.4/arch/x86/kernel/vm86_32.c
+--- linux-2.6.39.4/arch/x86/kernel/vm86_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/vm86_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -41,6 +41,7 @@
#include <linux/ptrace.h>
#include <linux/audit.h>
@@ -18370,9 +15605,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/vm86_32.c linux-2.6.39.3/arch/x86/kern
if (get_user(segoffs, intr_ptr))
goto cannot_handle;
if ((segoffs >> 16) == BIOSSEG)
-diff -urNp linux-2.6.39.3/arch/x86/kernel/vmlinux.lds.S linux-2.6.39.3/arch/x86/kernel/vmlinux.lds.S
---- linux-2.6.39.3/arch/x86/kernel/vmlinux.lds.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/vmlinux.lds.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/vmlinux.lds.S linux-2.6.39.4/arch/x86/kernel/vmlinux.lds.S
+--- linux-2.6.39.4/arch/x86/kernel/vmlinux.lds.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/vmlinux.lds.S 2011-08-05 19:44:35.000000000 -0400
@@ -26,6 +26,13 @@
#include <asm/page_types.h>
#include <asm/cache.h>
@@ -18669,9 +15904,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/vmlinux.lds.S linux-2.6.39.3/arch/x86/
"kernel image bigger than KERNEL_IMAGE_SIZE");
#ifdef CONFIG_SMP
-diff -urNp linux-2.6.39.3/arch/x86/kernel/vsyscall_64.c linux-2.6.39.3/arch/x86/kernel/vsyscall_64.c
---- linux-2.6.39.3/arch/x86/kernel/vsyscall_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/vsyscall_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/vsyscall_64.c linux-2.6.39.4/arch/x86/kernel/vsyscall_64.c
+--- linux-2.6.39.4/arch/x86/kernel/vsyscall_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/vsyscall_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -80,6 +80,7 @@ void update_vsyscall(struct timespec *wa
write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
@@ -18689,9 +15924,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/vsyscall_64.c linux-2.6.39.3/arch/x86/
p = tcache->blob[1];
} else if (__vgetcpu_mode == VGETCPU_RDTSCP) {
/* Load per CPU data from RDTSCP */
-diff -urNp linux-2.6.39.3/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.39.3/arch/x86/kernel/x8664_ksyms_64.c
---- linux-2.6.39.3/arch/x86/kernel/x8664_ksyms_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/x8664_ksyms_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.39.4/arch/x86/kernel/x8664_ksyms_64.c
+--- linux-2.6.39.4/arch/x86/kernel/x8664_ksyms_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/x8664_ksyms_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -29,8 +29,6 @@ EXPORT_SYMBOL(__put_user_8);
EXPORT_SYMBOL(copy_user_generic_string);
EXPORT_SYMBOL(copy_user_generic_unrolled);
@@ -18701,9 +15936,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/x8664_ksyms_64.c linux-2.6.39.3/arch/x
EXPORT_SYMBOL(copy_page);
EXPORT_SYMBOL(clear_page);
-diff -urNp linux-2.6.39.3/arch/x86/kernel/xsave.c linux-2.6.39.3/arch/x86/kernel/xsave.c
---- linux-2.6.39.3/arch/x86/kernel/xsave.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kernel/xsave.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kernel/xsave.c linux-2.6.39.4/arch/x86/kernel/xsave.c
+--- linux-2.6.39.4/arch/x86/kernel/xsave.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kernel/xsave.c 2011-08-05 19:44:35.000000000 -0400
@@ -130,7 +130,7 @@ int check_for_xstate(struct i387_fxsave_
fx_sw_user->xstate_size > fx_sw_user->extended_size)
return -EINVAL;
@@ -18731,9 +15966,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kernel/xsave.c linux-2.6.39.3/arch/x86/kernel
buf);
if (unlikely(err)) {
/*
-diff -urNp linux-2.6.39.3/arch/x86/kvm/emulate.c linux-2.6.39.3/arch/x86/kvm/emulate.c
---- linux-2.6.39.3/arch/x86/kvm/emulate.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/emulate.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/emulate.c linux-2.6.39.4/arch/x86/kvm/emulate.c
+--- linux-2.6.39.4/arch/x86/kvm/emulate.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/emulate.c 2011-08-05 19:44:35.000000000 -0400
@@ -89,7 +89,7 @@
#define Src2ImmByte (2<<29)
#define Src2One (3<<29)
@@ -18768,9 +16003,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/emulate.c linux-2.6.39.3/arch/x86/kvm/emu
switch ((_dst).bytes) { \
case 1: \
____emulate_2op(_op,_src,_dst,_eflags,_bx,_by,"b",u8); \
-diff -urNp linux-2.6.39.3/arch/x86/kvm/lapic.c linux-2.6.39.3/arch/x86/kvm/lapic.c
---- linux-2.6.39.3/arch/x86/kvm/lapic.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/lapic.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/lapic.c linux-2.6.39.4/arch/x86/kvm/lapic.c
+--- linux-2.6.39.4/arch/x86/kvm/lapic.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/lapic.c 2011-08-05 19:44:35.000000000 -0400
@@ -53,7 +53,7 @@
#define APIC_BUS_CYCLE_NS 1
@@ -18780,9 +16015,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/lapic.c linux-2.6.39.3/arch/x86/kvm/lapic
#define APIC_LVT_NUM 6
/* 14 is the version for Xeon and Pentium 8.4.8*/
-diff -urNp linux-2.6.39.3/arch/x86/kvm/mmu.c linux-2.6.39.3/arch/x86/kvm/mmu.c
---- linux-2.6.39.3/arch/x86/kvm/mmu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/mmu.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/mmu.c linux-2.6.39.4/arch/x86/kvm/mmu.c
+--- linux-2.6.39.4/arch/x86/kvm/mmu.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/mmu.c 2011-08-05 19:44:35.000000000 -0400
@@ -3240,7 +3240,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *
pgprintk("%s: gpa %llx bytes %d\n", __func__, gpa, bytes);
@@ -18801,9 +16036,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/mmu.c linux-2.6.39.3/arch/x86/kvm/mmu.c
gentry = 0;
kvm_mmu_free_some_pages(vcpu);
++vcpu->kvm->stat.mmu_pte_write;
-diff -urNp linux-2.6.39.3/arch/x86/kvm/paging_tmpl.h linux-2.6.39.3/arch/x86/kvm/paging_tmpl.h
---- linux-2.6.39.3/arch/x86/kvm/paging_tmpl.h 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/paging_tmpl.h 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/paging_tmpl.h linux-2.6.39.4/arch/x86/kvm/paging_tmpl.h
+--- linux-2.6.39.4/arch/x86/kvm/paging_tmpl.h 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/paging_tmpl.h 2011-08-05 19:44:35.000000000 -0400
@@ -552,6 +552,8 @@ static int FNAME(page_fault)(struct kvm_
unsigned long mmu_seq;
bool map_writable;
@@ -18822,9 +16057,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/paging_tmpl.h linux-2.6.39.3/arch/x86/kvm
spin_unlock(&vcpu->kvm->mmu_lock);
-diff -urNp linux-2.6.39.3/arch/x86/kvm/svm.c linux-2.6.39.3/arch/x86/kvm/svm.c
---- linux-2.6.39.3/arch/x86/kvm/svm.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/svm.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/svm.c linux-2.6.39.4/arch/x86/kvm/svm.c
+--- linux-2.6.39.4/arch/x86/kvm/svm.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/svm.c 2011-08-05 20:34:06.000000000 -0400
@@ -3278,7 +3278,11 @@ static void reload_tss(struct kvm_vcpu *
int cpu = raw_smp_processor_id();
@@ -18848,18 +16083,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/svm.c linux-2.6.39.3/arch/x86/kvm/svm.c
reload_tss(vcpu);
local_irq_disable();
-@@ -3871,7 +3879,7 @@ static void svm_fpu_deactivate(struct kv
- update_cr0_intercept(svm);
- }
-
--static struct kvm_x86_ops svm_x86_ops = {
-+static const struct kvm_x86_ops svm_x86_ops = {
- .cpu_has_kvm_support = has_svm,
- .disabled_by_bios = is_disabled,
- .hardware_setup = svm_hardware_setup,
-diff -urNp linux-2.6.39.3/arch/x86/kvm/vmx.c linux-2.6.39.3/arch/x86/kvm/vmx.c
---- linux-2.6.39.3/arch/x86/kvm/vmx.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/vmx.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/kvm/vmx.c linux-2.6.39.4/arch/x86/kvm/vmx.c
+--- linux-2.6.39.4/arch/x86/kvm/vmx.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/vmx.c 2011-08-05 20:34:06.000000000 -0400
@@ -725,7 +725,11 @@ static void reload_tss(void)
struct desc_struct *descs;
@@ -18938,27 +16164,9 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/vmx.c linux-2.6.39.3/arch/x86/kvm/vmx.c
vmx->launched = 1;
vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
-@@ -4368,7 +4395,7 @@ static void vmx_set_supported_cpuid(u32
- {
- }
-
--static struct kvm_x86_ops vmx_x86_ops = {
-+static const struct kvm_x86_ops vmx_x86_ops = {
- .cpu_has_kvm_support = cpu_has_kvm_support,
- .disabled_by_bios = vmx_disabled_by_bios,
- .hardware_setup = hardware_setup,
-diff -urNp linux-2.6.39.3/arch/x86/kvm/x86.c linux-2.6.39.3/arch/x86/kvm/x86.c
---- linux-2.6.39.3/arch/x86/kvm/x86.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/kvm/x86.c 2011-05-22 19:36:30.000000000 -0400
-@@ -94,7 +94,7 @@ static void update_cr8_intercept(struct
- static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
- struct kvm_cpuid_entry2 __user *entries);
-
--struct kvm_x86_ops *kvm_x86_ops;
-+const struct kvm_x86_ops *kvm_x86_ops;
- EXPORT_SYMBOL_GPL(kvm_x86_ops);
-
- int ignore_msrs = 0;
+diff -urNp linux-2.6.39.4/arch/x86/kvm/x86.c linux-2.6.39.4/arch/x86/kvm/x86.c
+--- linux-2.6.39.4/arch/x86/kvm/x86.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/kvm/x86.c 2011-08-05 20:34:06.000000000 -0400
@@ -2050,6 +2050,8 @@ long kvm_arch_dev_ioctl(struct file *fil
if (n < msr_list.nmsrs)
goto out;
@@ -19024,16 +16232,7 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/x86.c linux-2.6.39.3/arch/x86/kvm/x86.c
return -EINVAL;
if (irqchip_in_kernel(vcpu->kvm))
return -ENXIO;
-@@ -4672,7 +4683,7 @@ static unsigned long kvm_get_guest_ip(vo
- return ip;
- }
-
--static struct perf_guest_info_callbacks kvm_guest_cbs = {
-+static const struct perf_guest_info_callbacks kvm_guest_cbs = {
- .is_in_guest = kvm_is_in_guest,
- .is_user_mode = kvm_is_user_mode,
- .get_guest_ip = kvm_get_guest_ip,
-@@ -4690,10 +4701,10 @@ void kvm_after_handle_nmi(struct kvm_vcp
+@@ -4690,7 +4701,7 @@ void kvm_after_handle_nmi(struct kvm_vcp
}
EXPORT_SYMBOL_GPL(kvm_after_handle_nmi);
@@ -19041,14 +16240,25 @@ diff -urNp linux-2.6.39.3/arch/x86/kvm/x86.c linux-2.6.39.3/arch/x86/kvm/x86.c
+int kvm_arch_init(const void *opaque)
{
int r;
-- struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
-+ const struct kvm_x86_ops *ops = (const struct kvm_x86_ops *)opaque;
-
- if (kvm_x86_ops) {
- printk(KERN_ERR "kvm: already loaded the other module\n");
-diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_32.c linux-2.6.39.3/arch/x86/lib/atomic64_32.c
---- linux-2.6.39.3/arch/x86/lib/atomic64_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/atomic64_32.c 2011-05-22 19:36:30.000000000 -0400
+ struct kvm_x86_ops *ops = (struct kvm_x86_ops *)opaque;
+diff -urNp linux-2.6.39.4/arch/x86/lguest/boot.c linux-2.6.39.4/arch/x86/lguest/boot.c
+--- linux-2.6.39.4/arch/x86/lguest/boot.c 2011-06-25 12:55:22.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lguest/boot.c 2011-08-05 20:34:06.000000000 -0400
+@@ -1178,9 +1178,10 @@ static __init int early_put_chars(u32 vt
+ * Rebooting also tells the Host we're finished, but the RESTART flag tells the
+ * Launcher to reboot us.
+ */
+-static void lguest_restart(char *reason)
++static __noreturn void lguest_restart(char *reason)
+ {
+ hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0, 0);
++ BUG();
+ }
+
+ /*G:050
+diff -urNp linux-2.6.39.4/arch/x86/lib/atomic64_32.c linux-2.6.39.4/arch/x86/lib/atomic64_32.c
+--- linux-2.6.39.4/arch/x86/lib/atomic64_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/atomic64_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -8,18 +8,30 @@
long long atomic64_read_cx8(long long, const atomic64_t *v);
@@ -19127,9 +16337,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_32.c linux-2.6.39.3/arch/x86/lib
long long atomic64_dec_if_positive_386(atomic64_t *v);
EXPORT_SYMBOL(atomic64_dec_if_positive_386);
int atomic64_inc_not_zero_386(atomic64_t *v);
-diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_386_32.S linux-2.6.39.3/arch/x86/lib/atomic64_386_32.S
---- linux-2.6.39.3/arch/x86/lib/atomic64_386_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/atomic64_386_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/atomic64_386_32.S linux-2.6.39.4/arch/x86/lib/atomic64_386_32.S
+--- linux-2.6.39.4/arch/x86/lib/atomic64_386_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/atomic64_386_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -48,6 +48,10 @@ BEGIN(read)
movl (v), %eax
movl 4(v), %edx
@@ -19385,9 +16595,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_386_32.S linux-2.6.39.3/arch/x86
js 1f
movl %eax, (v)
movl %edx, 4(v)
-diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_cx8_32.S linux-2.6.39.3/arch/x86/lib/atomic64_cx8_32.S
---- linux-2.6.39.3/arch/x86/lib/atomic64_cx8_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/atomic64_cx8_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/atomic64_cx8_32.S linux-2.6.39.4/arch/x86/lib/atomic64_cx8_32.S
+--- linux-2.6.39.4/arch/x86/lib/atomic64_cx8_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/atomic64_cx8_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -39,6 +39,14 @@ ENTRY(atomic64_read_cx8)
CFI_ENDPROC
ENDPROC(atomic64_read_cx8)
@@ -19566,9 +16776,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/atomic64_cx8_32.S linux-2.6.39.3/arch/x86
LOCK_PREFIX
cmpxchg8b (%esi)
jne 1b
-diff -urNp linux-2.6.39.3/arch/x86/lib/checksum_32.S linux-2.6.39.3/arch/x86/lib/checksum_32.S
---- linux-2.6.39.3/arch/x86/lib/checksum_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/checksum_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/checksum_32.S linux-2.6.39.4/arch/x86/lib/checksum_32.S
+--- linux-2.6.39.4/arch/x86/lib/checksum_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/checksum_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -28,7 +28,8 @@
#include <linux/linkage.h>
#include <asm/dwarf2.h>
@@ -19813,9 +17023,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/checksum_32.S linux-2.6.39.3/arch/x86/lib
#undef ROUND
#undef ROUND1
-diff -urNp linux-2.6.39.3/arch/x86/lib/clear_page_64.S linux-2.6.39.3/arch/x86/lib/clear_page_64.S
---- linux-2.6.39.3/arch/x86/lib/clear_page_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/clear_page_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/clear_page_64.S linux-2.6.39.4/arch/x86/lib/clear_page_64.S
+--- linux-2.6.39.4/arch/x86/lib/clear_page_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/clear_page_64.S 2011-08-05 19:44:35.000000000 -0400
@@ -43,7 +43,7 @@ ENDPROC(clear_page)
#include <asm/cpufeature.h>
@@ -19825,9 +17035,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/clear_page_64.S linux-2.6.39.3/arch/x86/l
1: .byte 0xeb /* jmp <disp8> */
.byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
2:
-diff -urNp linux-2.6.39.3/arch/x86/lib/copy_page_64.S linux-2.6.39.3/arch/x86/lib/copy_page_64.S
---- linux-2.6.39.3/arch/x86/lib/copy_page_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/copy_page_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/copy_page_64.S linux-2.6.39.4/arch/x86/lib/copy_page_64.S
+--- linux-2.6.39.4/arch/x86/lib/copy_page_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/copy_page_64.S 2011-08-05 19:44:35.000000000 -0400
@@ -104,7 +104,7 @@ ENDPROC(copy_page)
#include <asm/cpufeature.h>
@@ -19837,9 +17047,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/copy_page_64.S linux-2.6.39.3/arch/x86/li
1: .byte 0xeb /* jmp <disp8> */
.byte (copy_page_c - copy_page) - (2f - 1b) /* offset */
2:
-diff -urNp linux-2.6.39.3/arch/x86/lib/copy_user_64.S linux-2.6.39.3/arch/x86/lib/copy_user_64.S
---- linux-2.6.39.3/arch/x86/lib/copy_user_64.S 2011-06-03 00:04:13.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/copy_user_64.S 2011-06-03 00:32:05.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/copy_user_64.S linux-2.6.39.4/arch/x86/lib/copy_user_64.S
+--- linux-2.6.39.4/arch/x86/lib/copy_user_64.S 2011-06-03 00:04:13.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/copy_user_64.S 2011-08-05 19:44:35.000000000 -0400
@@ -15,13 +15,14 @@
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
@@ -19896,9 +17106,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/copy_user_64.S linux-2.6.39.3/arch/x86/li
movl %edx,%ecx
xorl %eax,%eax
rep
-diff -urNp linux-2.6.39.3/arch/x86/lib/copy_user_nocache_64.S linux-2.6.39.3/arch/x86/lib/copy_user_nocache_64.S
---- linux-2.6.39.3/arch/x86/lib/copy_user_nocache_64.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/copy_user_nocache_64.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/copy_user_nocache_64.S linux-2.6.39.4/arch/x86/lib/copy_user_nocache_64.S
+--- linux-2.6.39.4/arch/x86/lib/copy_user_nocache_64.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/copy_user_nocache_64.S 2011-08-05 19:44:35.000000000 -0400
@@ -14,6 +14,7 @@
#include <asm/current.h>
#include <asm/asm-offsets.h>
@@ -19923,9 +17133,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/copy_user_nocache_64.S linux-2.6.39.3/arc
cmpl $8,%edx
jb 20f /* less then 8 bytes, go to byte copy loop */
ALIGN_DESTINATION
-diff -urNp linux-2.6.39.3/arch/x86/lib/csum-wrappers_64.c linux-2.6.39.3/arch/x86/lib/csum-wrappers_64.c
---- linux-2.6.39.3/arch/x86/lib/csum-wrappers_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/csum-wrappers_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/csum-wrappers_64.c linux-2.6.39.4/arch/x86/lib/csum-wrappers_64.c
+--- linux-2.6.39.4/arch/x86/lib/csum-wrappers_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/csum-wrappers_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -52,6 +52,12 @@ csum_partial_copy_from_user(const void _
len -= 2;
}
@@ -19952,9 +17162,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/csum-wrappers_64.c linux-2.6.39.3/arch/x8
return csum_partial_copy_generic(src, (void __force *)dst,
len, isum, NULL, errp);
}
-diff -urNp linux-2.6.39.3/arch/x86/lib/getuser.S linux-2.6.39.3/arch/x86/lib/getuser.S
---- linux-2.6.39.3/arch/x86/lib/getuser.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/getuser.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/getuser.S linux-2.6.39.4/arch/x86/lib/getuser.S
+--- linux-2.6.39.4/arch/x86/lib/getuser.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/getuser.S 2011-08-05 19:44:35.000000000 -0400
@@ -33,14 +33,35 @@
#include <asm/asm-offsets.h>
#include <asm/thread_info.h>
@@ -20060,9 +17270,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/getuser.S linux-2.6.39.3/arch/x86/lib/get
4: movq -7(%_ASM_AX),%_ASM_DX
xor %eax,%eax
ret
-diff -urNp linux-2.6.39.3/arch/x86/lib/insn.c linux-2.6.39.3/arch/x86/lib/insn.c
---- linux-2.6.39.3/arch/x86/lib/insn.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/insn.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/insn.c linux-2.6.39.4/arch/x86/lib/insn.c
+--- linux-2.6.39.4/arch/x86/lib/insn.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/insn.c 2011-08-05 19:44:35.000000000 -0400
@@ -21,6 +21,11 @@
#include <linux/string.h>
#include <asm/inat.h>
@@ -20086,9 +17296,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/insn.c linux-2.6.39.3/arch/x86/lib/insn.c
insn->x86_64 = x86_64 ? 1 : 0;
insn->opnd_bytes = 4;
if (x86_64)
-diff -urNp linux-2.6.39.3/arch/x86/lib/mmx_32.c linux-2.6.39.3/arch/x86/lib/mmx_32.c
---- linux-2.6.39.3/arch/x86/lib/mmx_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/mmx_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/mmx_32.c linux-2.6.39.4/arch/x86/lib/mmx_32.c
+--- linux-2.6.39.4/arch/x86/lib/mmx_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/mmx_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -29,6 +29,7 @@ void *_mmx_memcpy(void *to, const void *
{
void *p;
@@ -20404,9 +17614,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/mmx_32.c linux-2.6.39.3/arch/x86/lib/mmx_
from += 64;
to += 64;
-diff -urNp linux-2.6.39.3/arch/x86/lib/putuser.S linux-2.6.39.3/arch/x86/lib/putuser.S
---- linux-2.6.39.3/arch/x86/lib/putuser.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/putuser.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/putuser.S linux-2.6.39.4/arch/x86/lib/putuser.S
+--- linux-2.6.39.4/arch/x86/lib/putuser.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/putuser.S 2011-08-05 19:44:35.000000000 -0400
@@ -15,7 +15,8 @@
#include <asm/thread_info.h>
#include <asm/errno.h>
@@ -20544,9 +17754,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/putuser.S linux-2.6.39.3/arch/x86/lib/put
#endif
xor %eax,%eax
EXIT
-diff -urNp linux-2.6.39.3/arch/x86/lib/usercopy_32.c linux-2.6.39.3/arch/x86/lib/usercopy_32.c
---- linux-2.6.39.3/arch/x86/lib/usercopy_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/usercopy_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/usercopy_32.c linux-2.6.39.4/arch/x86/lib/usercopy_32.c
+--- linux-2.6.39.4/arch/x86/lib/usercopy_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/usercopy_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -43,7 +43,7 @@ do { \
__asm__ __volatile__( \
" testl %1,%1\n" \
@@ -21167,9 +18377,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/usercopy_32.c linux-2.6.39.3/arch/x86/lib
+}
+EXPORT_SYMBOL(set_fs);
+#endif
-diff -urNp linux-2.6.39.3/arch/x86/lib/usercopy_64.c linux-2.6.39.3/arch/x86/lib/usercopy_64.c
---- linux-2.6.39.3/arch/x86/lib/usercopy_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/lib/usercopy_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/lib/usercopy_64.c linux-2.6.39.4/arch/x86/lib/usercopy_64.c
+--- linux-2.6.39.4/arch/x86/lib/usercopy_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/lib/usercopy_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -42,6 +42,12 @@ long
__strncpy_from_user(char *dst, const char __user *src, long count)
{
@@ -21218,9 +18428,9 @@ diff -urNp linux-2.6.39.3/arch/x86/lib/usercopy_64.c linux-2.6.39.3/arch/x86/lib
}
EXPORT_SYMBOL(copy_in_user);
-diff -urNp linux-2.6.39.3/arch/x86/Makefile linux-2.6.39.3/arch/x86/Makefile
---- linux-2.6.39.3/arch/x86/Makefile 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/Makefile 2011-07-19 18:16:36.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/Makefile linux-2.6.39.4/arch/x86/Makefile
+--- linux-2.6.39.4/arch/x86/Makefile 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/Makefile 2011-08-05 19:44:35.000000000 -0400
@@ -44,6 +44,7 @@ ifeq ($(CONFIG_X86_32),y)
else
BITS := 64
@@ -21242,9 +18452,9 @@ diff -urNp linux-2.6.39.3/arch/x86/Makefile linux-2.6.39.3/arch/x86/Makefile
+
+archprepare:
+ $(if $(LDFLAGS_BUILD_ID),,$(error $(OLD_LD)))
-diff -urNp linux-2.6.39.3/arch/x86/mm/extable.c linux-2.6.39.3/arch/x86/mm/extable.c
---- linux-2.6.39.3/arch/x86/mm/extable.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/extable.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/extable.c linux-2.6.39.4/arch/x86/mm/extable.c
+--- linux-2.6.39.4/arch/x86/mm/extable.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/extable.c 2011-08-05 19:44:35.000000000 -0400
@@ -1,14 +1,71 @@
#include <linux/module.h>
#include <linux/spinlock.h>
@@ -21318,9 +18528,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/extable.c linux-2.6.39.3/arch/x86/mm/extab
extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
extern u32 pnp_bios_is_utter_crap;
pnp_bios_is_utter_crap = 1;
-diff -urNp linux-2.6.39.3/arch/x86/mm/fault.c linux-2.6.39.3/arch/x86/mm/fault.c
---- linux-2.6.39.3/arch/x86/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/fault.c 2011-06-06 17:34:04.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/fault.c linux-2.6.39.4/arch/x86/mm/fault.c
+--- linux-2.6.39.4/arch/x86/mm/fault.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/fault.c 2011-08-05 19:44:35.000000000 -0400
@@ -12,10 +12,18 @@
#include <linux/mmiotrace.h> /* kmmio_handler, ... */
#include <linux/perf_event.h> /* perf_sw_event */
@@ -21990,9 +19200,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/fault.c linux-2.6.39.3/arch/x86/mm/fault.c
+
+ return ret ? -EFAULT : 0;
+}
-diff -urNp linux-2.6.39.3/arch/x86/mm/gup.c linux-2.6.39.3/arch/x86/mm/gup.c
---- linux-2.6.39.3/arch/x86/mm/gup.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/gup.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/gup.c linux-2.6.39.4/arch/x86/mm/gup.c
+--- linux-2.6.39.4/arch/x86/mm/gup.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/gup.c 2011-08-05 19:44:35.000000000 -0400
@@ -263,7 +263,7 @@ int __get_user_pages_fast(unsigned long
addr = start;
len = (unsigned long) nr_pages << PAGE_SHIFT;
@@ -22002,9 +19212,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/gup.c linux-2.6.39.3/arch/x86/mm/gup.c
(void __user *)start, len)))
return 0;
-diff -urNp linux-2.6.39.3/arch/x86/mm/highmem_32.c linux-2.6.39.3/arch/x86/mm/highmem_32.c
---- linux-2.6.39.3/arch/x86/mm/highmem_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/highmem_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/highmem_32.c linux-2.6.39.4/arch/x86/mm/highmem_32.c
+--- linux-2.6.39.4/arch/x86/mm/highmem_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/highmem_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -44,7 +44,10 @@ void *kmap_atomic_prot(struct page *page
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
@@ -22016,9 +19226,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/highmem_32.c linux-2.6.39.3/arch/x86/mm/hi
return (void *)vaddr;
}
-diff -urNp linux-2.6.39.3/arch/x86/mm/hugetlbpage.c linux-2.6.39.3/arch/x86/mm/hugetlbpage.c
---- linux-2.6.39.3/arch/x86/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/hugetlbpage.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/hugetlbpage.c linux-2.6.39.4/arch/x86/mm/hugetlbpage.c
+--- linux-2.6.39.4/arch/x86/mm/hugetlbpage.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/hugetlbpage.c 2011-08-05 19:44:35.000000000 -0400
@@ -266,13 +266,20 @@ static unsigned long hugetlb_get_unmappe
struct hstate *h = hstate_file(file);
struct mm_struct *mm = current->mm;
@@ -22226,9 +19436,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/hugetlbpage.c linux-2.6.39.3/arch/x86/mm/h
return addr;
}
if (mm->get_unmapped_area == arch_get_unmapped_area)
-diff -urNp linux-2.6.39.3/arch/x86/mm/init_32.c linux-2.6.39.3/arch/x86/mm/init_32.c
---- linux-2.6.39.3/arch/x86/mm/init_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/init_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/init_32.c linux-2.6.39.4/arch/x86/mm/init_32.c
+--- linux-2.6.39.4/arch/x86/mm/init_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/init_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -74,36 +74,6 @@ static __init void *alloc_low_page(void)
}
@@ -22503,9 +19713,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/init_32.c linux-2.6.39.3/arch/x86/mm/init_
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
printk(KERN_INFO "Write protecting the kernel text: %luk\n",
size >> 10);
-diff -urNp linux-2.6.39.3/arch/x86/mm/init_64.c linux-2.6.39.3/arch/x86/mm/init_64.c
---- linux-2.6.39.3/arch/x86/mm/init_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/init_64.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/init_64.c linux-2.6.39.4/arch/x86/mm/init_64.c
+--- linux-2.6.39.4/arch/x86/mm/init_64.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/init_64.c 2011-08-05 19:44:35.000000000 -0400
@@ -74,7 +74,7 @@ early_param("gbpages", parse_direct_gbpa
* around without checking the pgd every time.
*/
@@ -22617,9 +19827,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/init_64.c linux-2.6.39.3/arch/x86/mm/init_
return "[vdso]";
if (vma == &gate_vma)
return "[vsyscall]";
-diff -urNp linux-2.6.39.3/arch/x86/mm/init.c linux-2.6.39.3/arch/x86/mm/init.c
---- linux-2.6.39.3/arch/x86/mm/init.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/init.c 2011-06-07 19:41:11.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/init.c linux-2.6.39.4/arch/x86/mm/init.c
+--- linux-2.6.39.4/arch/x86/mm/init.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/init.c 2011-08-05 19:44:35.000000000 -0400
@@ -33,7 +33,7 @@ int direct_gbpages
static void __init find_early_table_space(unsigned long end, int use_pse,
int use_gbpages)
@@ -22752,9 +19962,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/init.c linux-2.6.39.3/arch/x86/mm/init.c
free_init_pages("unused kernel memory",
(unsigned long)(&__init_begin),
(unsigned long)(&__init_end));
-diff -urNp linux-2.6.39.3/arch/x86/mm/iomap_32.c linux-2.6.39.3/arch/x86/mm/iomap_32.c
---- linux-2.6.39.3/arch/x86/mm/iomap_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/iomap_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/iomap_32.c linux-2.6.39.4/arch/x86/mm/iomap_32.c
+--- linux-2.6.39.4/arch/x86/mm/iomap_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/iomap_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -64,7 +64,11 @@ void *kmap_atomic_prot_pfn(unsigned long
type = kmap_atomic_idx_push();
idx = type + KM_TYPE_NR * smp_processor_id();
@@ -22767,9 +19977,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/iomap_32.c linux-2.6.39.3/arch/x86/mm/ioma
arch_flush_lazy_mmu_mode();
return (void *)vaddr;
-diff -urNp linux-2.6.39.3/arch/x86/mm/ioremap.c linux-2.6.39.3/arch/x86/mm/ioremap.c
---- linux-2.6.39.3/arch/x86/mm/ioremap.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/ioremap.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/ioremap.c linux-2.6.39.4/arch/x86/mm/ioremap.c
+--- linux-2.6.39.4/arch/x86/mm/ioremap.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/ioremap.c 2011-08-05 19:44:35.000000000 -0400
@@ -104,7 +104,7 @@ static void __iomem *__ioremap_caller(re
for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
int is_ram = page_is_ram(pfn);
@@ -22798,9 +20008,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/ioremap.c linux-2.6.39.3/arch/x86/mm/iorem
/*
* The boot-ioremap range spans multiple pmds, for which
-diff -urNp linux-2.6.39.3/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.39.3/arch/x86/mm/kmemcheck/kmemcheck.c
---- linux-2.6.39.3/arch/x86/mm/kmemcheck/kmemcheck.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/kmemcheck/kmemcheck.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.39.4/arch/x86/mm/kmemcheck/kmemcheck.c
+--- linux-2.6.39.4/arch/x86/mm/kmemcheck/kmemcheck.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/kmemcheck/kmemcheck.c 2011-08-05 19:44:35.000000000 -0400
@@ -622,9 +622,9 @@ bool kmemcheck_fault(struct pt_regs *reg
* memory (e.g. tracked pages)? For now, we need this to avoid
* invoking kmemcheck for PnP BIOS calls.
@@ -22813,9 +20023,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/kmemcheck/kmemcheck.c linux-2.6.39.3/arch/
return false;
pte = kmemcheck_pte_lookup(address);
-diff -urNp linux-2.6.39.3/arch/x86/mm/mmap.c linux-2.6.39.3/arch/x86/mm/mmap.c
---- linux-2.6.39.3/arch/x86/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/mmap.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/mmap.c linux-2.6.39.4/arch/x86/mm/mmap.c
+--- linux-2.6.39.4/arch/x86/mm/mmap.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/mmap.c 2011-08-05 19:44:35.000000000 -0400
@@ -49,7 +49,7 @@ static unsigned int stack_maxrandom_size
* Leave an at least ~128 MB hole with possible stack randomization.
*/
@@ -22897,9 +20107,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/mmap.c linux-2.6.39.3/arch/x86/mm/mmap.c
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
-diff -urNp linux-2.6.39.3/arch/x86/mm/mmio-mod.c linux-2.6.39.3/arch/x86/mm/mmio-mod.c
---- linux-2.6.39.3/arch/x86/mm/mmio-mod.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/mmio-mod.c 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/mmio-mod.c linux-2.6.39.4/arch/x86/mm/mmio-mod.c
+--- linux-2.6.39.4/arch/x86/mm/mmio-mod.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/mmio-mod.c 2011-08-05 19:44:35.000000000 -0400
@@ -195,7 +195,7 @@ static void pre(struct kmmio_probe *p, s
break;
default:
@@ -22927,9 +20137,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/mmio-mod.c linux-2.6.39.3/arch/x86/mm/mmio
};
map.map_id = trace->id;
-diff -urNp linux-2.6.39.3/arch/x86/mm/numa_32.c linux-2.6.39.3/arch/x86/mm/numa_32.c
---- linux-2.6.39.3/arch/x86/mm/numa_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/numa_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/numa_32.c linux-2.6.39.4/arch/x86/mm/numa_32.c
+--- linux-2.6.39.4/arch/x86/mm/numa_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/numa_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -99,7 +99,6 @@ unsigned long node_memmap_size_bytes(int
}
#endif
@@ -22938,9 +20148,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/numa_32.c linux-2.6.39.3/arch/x86/mm/numa_
extern unsigned long highend_pfn, highstart_pfn;
#define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)
-diff -urNp linux-2.6.39.3/arch/x86/mm/pageattr.c linux-2.6.39.3/arch/x86/mm/pageattr.c
---- linux-2.6.39.3/arch/x86/mm/pageattr.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pageattr.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pageattr.c linux-2.6.39.4/arch/x86/mm/pageattr.c
+--- linux-2.6.39.4/arch/x86/mm/pageattr.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pageattr.c 2011-08-05 19:44:35.000000000 -0400
@@ -261,7 +261,7 @@ static inline pgprot_t static_protection
*/
#ifdef CONFIG_PCI_BIOS
@@ -23025,9 +20235,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pageattr.c linux-2.6.39.3/arch/x86/mm/page
}
static int
-diff -urNp linux-2.6.39.3/arch/x86/mm/pageattr-test.c linux-2.6.39.3/arch/x86/mm/pageattr-test.c
---- linux-2.6.39.3/arch/x86/mm/pageattr-test.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pageattr-test.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pageattr-test.c linux-2.6.39.4/arch/x86/mm/pageattr-test.c
+--- linux-2.6.39.4/arch/x86/mm/pageattr-test.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pageattr-test.c 2011-08-05 19:44:35.000000000 -0400
@@ -36,7 +36,7 @@ enum {
static int pte_testbit(pte_t pte)
@@ -23037,9 +20247,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pageattr-test.c linux-2.6.39.3/arch/x86/mm
}
struct split_state {
-diff -urNp linux-2.6.39.3/arch/x86/mm/pat.c linux-2.6.39.3/arch/x86/mm/pat.c
---- linux-2.6.39.3/arch/x86/mm/pat.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pat.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pat.c linux-2.6.39.4/arch/x86/mm/pat.c
+--- linux-2.6.39.4/arch/x86/mm/pat.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pat.c 2011-08-05 19:44:35.000000000 -0400
@@ -361,7 +361,7 @@ int free_memtype(u64 start, u64 end)
if (!entry) {
@@ -23087,9 +20297,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pat.c linux-2.6.39.3/arch/x86/mm/pat.c
cattr_name(want_flags),
(unsigned long long)paddr,
(unsigned long long)(paddr + size),
-diff -urNp linux-2.6.39.3/arch/x86/mm/pf_in.c linux-2.6.39.3/arch/x86/mm/pf_in.c
---- linux-2.6.39.3/arch/x86/mm/pf_in.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pf_in.c 2011-07-06 20:00:13.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pf_in.c linux-2.6.39.4/arch/x86/mm/pf_in.c
+--- linux-2.6.39.4/arch/x86/mm/pf_in.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pf_in.c 2011-08-05 19:44:35.000000000 -0400
@@ -148,7 +148,7 @@ enum reason_type get_ins_type(unsigned l
int i;
enum reason_type rv = OTHERS;
@@ -23135,9 +20345,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pf_in.c linux-2.6.39.3/arch/x86/mm/pf_in.c
p += skip_prefix(p, &prf);
p += get_opcode(p, &opcode);
for (i = 0; i < ARRAY_SIZE(imm_wop); i++)
-diff -urNp linux-2.6.39.3/arch/x86/mm/pgtable_32.c linux-2.6.39.3/arch/x86/mm/pgtable_32.c
---- linux-2.6.39.3/arch/x86/mm/pgtable_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pgtable_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pgtable_32.c linux-2.6.39.4/arch/x86/mm/pgtable_32.c
+--- linux-2.6.39.4/arch/x86/mm/pgtable_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pgtable_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -48,10 +48,13 @@ void set_pte_vaddr(unsigned long vaddr,
return;
}
@@ -23152,9 +20362,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pgtable_32.c linux-2.6.39.3/arch/x86/mm/pg
/*
* It's enough to flush this one mapping.
-diff -urNp linux-2.6.39.3/arch/x86/mm/pgtable.c linux-2.6.39.3/arch/x86/mm/pgtable.c
---- linux-2.6.39.3/arch/x86/mm/pgtable.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/pgtable.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/pgtable.c linux-2.6.39.4/arch/x86/mm/pgtable.c
+--- linux-2.6.39.4/arch/x86/mm/pgtable.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/pgtable.c 2011-08-05 19:44:35.000000000 -0400
@@ -84,10 +84,52 @@ static inline void pgd_list_del(pgd_t *p
list_del(&page->lru);
}
@@ -23400,9 +20610,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/pgtable.c linux-2.6.39.3/arch/x86/mm/pgtab
pgd_dtor(pgd);
paravirt_pgd_free(mm, pgd);
free_page((unsigned long)pgd);
-diff -urNp linux-2.6.39.3/arch/x86/mm/setup_nx.c linux-2.6.39.3/arch/x86/mm/setup_nx.c
---- linux-2.6.39.3/arch/x86/mm/setup_nx.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/setup_nx.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/setup_nx.c linux-2.6.39.4/arch/x86/mm/setup_nx.c
+--- linux-2.6.39.4/arch/x86/mm/setup_nx.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/setup_nx.c 2011-08-05 19:44:35.000000000 -0400
@@ -5,8 +5,10 @@
#include <asm/pgtable.h>
#include <asm/proto.h>
@@ -23432,9 +20642,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/setup_nx.c linux-2.6.39.3/arch/x86/mm/setu
__supported_pte_mask &= ~_PAGE_NX;
}
-diff -urNp linux-2.6.39.3/arch/x86/mm/tlb.c linux-2.6.39.3/arch/x86/mm/tlb.c
---- linux-2.6.39.3/arch/x86/mm/tlb.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/mm/tlb.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/mm/tlb.c linux-2.6.39.4/arch/x86/mm/tlb.c
+--- linux-2.6.39.4/arch/x86/mm/tlb.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/mm/tlb.c 2011-08-05 19:44:35.000000000 -0400
@@ -65,7 +65,11 @@ void leave_mm(int cpu)
BUG();
cpumask_clear_cpu(cpu,
@@ -23447,9 +20657,9 @@ diff -urNp linux-2.6.39.3/arch/x86/mm/tlb.c linux-2.6.39.3/arch/x86/mm/tlb.c
}
EXPORT_SYMBOL_GPL(leave_mm);
-diff -urNp linux-2.6.39.3/arch/x86/oprofile/backtrace.c linux-2.6.39.3/arch/x86/oprofile/backtrace.c
---- linux-2.6.39.3/arch/x86/oprofile/backtrace.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/oprofile/backtrace.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/oprofile/backtrace.c linux-2.6.39.4/arch/x86/oprofile/backtrace.c
+--- linux-2.6.39.4/arch/x86/oprofile/backtrace.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/oprofile/backtrace.c 2011-08-05 19:44:35.000000000 -0400
@@ -57,7 +57,7 @@ dump_user_backtrace_32(struct stack_fram
struct stack_frame_ia32 *fp;
@@ -23468,137 +20678,23 @@ diff -urNp linux-2.6.39.3/arch/x86/oprofile/backtrace.c linux-2.6.39.3/arch/x86/
unsigned long stack = kernel_stack_pointer(regs);
if (depth)
dump_trace(NULL, regs, (unsigned long *)stack, 0,
-diff -urNp linux-2.6.39.3/arch/x86/pci/ce4100.c linux-2.6.39.3/arch/x86/pci/ce4100.c
---- linux-2.6.39.3/arch/x86/pci/ce4100.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/ce4100.c 2011-05-22 19:36:30.000000000 -0400
-@@ -302,7 +302,7 @@ static int ce4100_conf_write(unsigned in
- return pci_direct_conf1.write(seg, bus, devfn, reg, len, value);
- }
-
--struct pci_raw_ops ce4100_pci_conf = {
-+const struct pci_raw_ops ce4100_pci_conf = {
- .read = ce4100_conf_read,
- .write = ce4100_conf_write,
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/common.c linux-2.6.39.3/arch/x86/pci/common.c
---- linux-2.6.39.3/arch/x86/pci/common.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/common.c 2011-05-22 19:36:30.000000000 -0400
-@@ -33,8 +33,8 @@ int noioapicreroute = 1;
- int pcibios_last_bus = -1;
- unsigned long pirq_table_addr;
- struct pci_bus *pci_root_bus;
--struct pci_raw_ops *raw_pci_ops;
--struct pci_raw_ops *raw_pci_ext_ops;
-+const struct pci_raw_ops *raw_pci_ops;
-+const struct pci_raw_ops *raw_pci_ext_ops;
-
- int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
- int reg, int len, u32 *val)
-diff -urNp linux-2.6.39.3/arch/x86/pci/direct.c linux-2.6.39.3/arch/x86/pci/direct.c
---- linux-2.6.39.3/arch/x86/pci/direct.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/direct.c 2011-05-22 19:36:30.000000000 -0400
-@@ -79,7 +79,7 @@ static int pci_conf1_write(unsigned int
-
- #undef PCI_CONF1_ADDRESS
-
--struct pci_raw_ops pci_direct_conf1 = {
-+const struct pci_raw_ops pci_direct_conf1 = {
- .read = pci_conf1_read,
- .write = pci_conf1_write,
- };
-@@ -173,7 +173,7 @@ static int pci_conf2_write(unsigned int
-
- #undef PCI_CONF2_ADDRESS
-
--struct pci_raw_ops pci_direct_conf2 = {
-+const struct pci_raw_ops pci_direct_conf2 = {
- .read = pci_conf2_read,
- .write = pci_conf2_write,
- };
-@@ -189,7 +189,7 @@ struct pci_raw_ops pci_direct_conf2 = {
- * This should be close to trivial, but it isn't, because there are buggy
- * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
- */
--static int __init pci_sanity_check(struct pci_raw_ops *o)
-+static int __init pci_sanity_check(const struct pci_raw_ops *o)
- {
- u32 x = 0;
- int year, devfn;
-diff -urNp linux-2.6.39.3/arch/x86/pci/fixup.c linux-2.6.39.3/arch/x86/pci/fixup.c
---- linux-2.6.39.3/arch/x86/pci/fixup.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/fixup.c 2011-05-22 19:36:30.000000000 -0400
-@@ -435,7 +435,7 @@ static const struct dmi_system_id __devi
- DMI_MATCH(DMI_PRODUCT_VERSION, "PSA40U"),
- },
- },
-- { }
-+ {}
- };
-
- static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev)
-diff -urNp linux-2.6.39.3/arch/x86/pci/mmconfig_32.c linux-2.6.39.3/arch/x86/pci/mmconfig_32.c
---- linux-2.6.39.3/arch/x86/pci/mmconfig_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/mmconfig_32.c 2011-05-22 19:36:30.000000000 -0400
-@@ -117,7 +117,7 @@ static int pci_mmcfg_write(unsigned int
- return 0;
- }
-
--static struct pci_raw_ops pci_mmcfg = {
-+static const struct pci_raw_ops pci_mmcfg = {
- .read = pci_mmcfg_read,
- .write = pci_mmcfg_write,
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/mmconfig_64.c linux-2.6.39.3/arch/x86/pci/mmconfig_64.c
---- linux-2.6.39.3/arch/x86/pci/mmconfig_64.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/mmconfig_64.c 2011-05-22 19:36:30.000000000 -0400
-@@ -81,7 +81,7 @@ static int pci_mmcfg_write(unsigned int
- return 0;
- }
-
--static struct pci_raw_ops pci_mmcfg = {
-+static const struct pci_raw_ops pci_mmcfg = {
- .read = pci_mmcfg_read,
- .write = pci_mmcfg_write,
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/mrst.c linux-2.6.39.3/arch/x86/pci/mrst.c
---- linux-2.6.39.3/arch/x86/pci/mrst.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/mrst.c 2011-05-22 19:36:30.000000000 -0400
-@@ -218,7 +218,7 @@ static int mrst_pci_irq_enable(struct pc
- return 0;
- }
-
--struct pci_ops pci_mrst_ops = {
-+const struct pci_ops pci_mrst_ops = {
- .read = pci_read,
- .write = pci_write,
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/numaq_32.c linux-2.6.39.3/arch/x86/pci/numaq_32.c
---- linux-2.6.39.3/arch/x86/pci/numaq_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/numaq_32.c 2011-05-22 19:36:30.000000000 -0400
-@@ -108,7 +108,7 @@ static int pci_conf1_mq_write(unsigned i
-
- #undef PCI_CONF1_MQ_ADDRESS
-
--static struct pci_raw_ops pci_direct_conf1_mq = {
-+static const struct pci_raw_ops pci_direct_conf1_mq = {
- .read = pci_conf1_mq_read,
- .write = pci_conf1_mq_write
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/olpc.c linux-2.6.39.3/arch/x86/pci/olpc.c
---- linux-2.6.39.3/arch/x86/pci/olpc.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/olpc.c 2011-05-22 19:36:30.000000000 -0400
-@@ -297,7 +297,7 @@ static int pci_olpc_write(unsigned int s
- return 0;
+diff -urNp linux-2.6.39.4/arch/x86/pci/mrst.c linux-2.6.39.4/arch/x86/pci/mrst.c
+--- linux-2.6.39.4/arch/x86/pci/mrst.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/pci/mrst.c 2011-08-05 20:34:06.000000000 -0400
+@@ -234,7 +234,9 @@ int __init pci_mrst_init(void)
+ printk(KERN_INFO "Moorestown platform detected, using MRST PCI ops\n");
+ pci_mmcfg_late_init();
+ pcibios_enable_irq = mrst_pci_irq_enable;
+- pci_root_ops = pci_mrst_ops;
++ pax_open_kernel();
++ memcpy((void *)&pci_root_ops, &pci_mrst_ops, sizeof(pci_mrst_ops));
++ pax_close_kernel();
+ /* Continue with standard init */
+ return 1;
}
-
--static struct pci_raw_ops pci_olpc_conf = {
-+static const struct pci_raw_ops pci_olpc_conf = {
- .read = pci_olpc_read,
- .write = pci_olpc_write,
- };
-diff -urNp linux-2.6.39.3/arch/x86/pci/pcbios.c linux-2.6.39.3/arch/x86/pci/pcbios.c
---- linux-2.6.39.3/arch/x86/pci/pcbios.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/pcbios.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/pci/pcbios.c linux-2.6.39.4/arch/x86/pci/pcbios.c
+--- linux-2.6.39.4/arch/x86/pci/pcbios.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/pci/pcbios.c 2011-08-05 20:34:06.000000000 -0400
@@ -79,50 +79,93 @@ union bios32 {
static struct {
unsigned long address;
@@ -23856,24 +20952,6 @@ diff -urNp linux-2.6.39.3/arch/x86/pci/pcbios.c linux-2.6.39.3/arch/x86/pci/pcbi
break;
}
-@@ -301,7 +371,7 @@ static int pci_bios_write(unsigned int s
- * Function table for BIOS32 access
- */
-
--static struct pci_raw_ops pci_bios_access = {
-+static const struct pci_raw_ops pci_bios_access = {
- .read = pci_bios_read,
- .write = pci_bios_write
- };
-@@ -310,7 +380,7 @@ static struct pci_raw_ops pci_bios_acces
- * Try to find PCI BIOS.
- */
-
--static struct pci_raw_ops * __devinit pci_find_bios(void)
-+static const struct pci_raw_ops * __devinit pci_find_bios(void)
- {
- union bios32 *check;
- unsigned char sum;
@@ -392,10 +462,13 @@ struct irq_routing_table * pcibios_get_i
DBG("PCI: Fetching IRQ routing table... ");
@@ -23921,21 +20999,9 @@ diff -urNp linux-2.6.39.3/arch/x86/pci/pcbios.c linux-2.6.39.3/arch/x86/pci/pcbi
return !(ret & 0xff00);
}
EXPORT_SYMBOL(pcibios_set_irq_routing);
-diff -urNp linux-2.6.39.3/arch/x86/pci/xen.c linux-2.6.39.3/arch/x86/pci/xen.c
---- linux-2.6.39.3/arch/x86/pci/xen.c 2011-07-09 09:18:51.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/pci/xen.c 2011-07-09 09:19:18.000000000 -0400
-@@ -62,7 +62,7 @@ static int acpi_register_gsi_xen_hvm(str
- #include <linux/msi.h>
- #include <asm/msidef.h>
-
--struct xen_pci_frontend_ops *xen_pci_frontend;
-+const struct xen_pci_frontend_ops *xen_pci_frontend;
- EXPORT_SYMBOL_GPL(xen_pci_frontend);
-
- #define XEN_PIRQ_MSI_DATA (MSI_DATA_TRIGGER_EDGE | \
-diff -urNp linux-2.6.39.3/arch/x86/platform/efi/efi_32.c linux-2.6.39.3/arch/x86/platform/efi/efi_32.c
---- linux-2.6.39.3/arch/x86/platform/efi/efi_32.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/platform/efi/efi_32.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/platform/efi/efi_32.c linux-2.6.39.4/arch/x86/platform/efi/efi_32.c
+--- linux-2.6.39.4/arch/x86/platform/efi/efi_32.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/platform/efi/efi_32.c 2011-08-05 19:44:35.000000000 -0400
@@ -38,70 +38,37 @@
*/
@@ -24016,9 +21082,9 @@ diff -urNp linux-2.6.39.3/arch/x86/platform/efi/efi_32.c linux-2.6.39.3/arch/x86
/*
* After the lock is released, the original page table is restored.
-diff -urNp linux-2.6.39.3/arch/x86/platform/efi/efi_stub_32.S linux-2.6.39.3/arch/x86/platform/efi/efi_stub_32.S
---- linux-2.6.39.3/arch/x86/platform/efi/efi_stub_32.S 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/platform/efi/efi_stub_32.S 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/platform/efi/efi_stub_32.S linux-2.6.39.4/arch/x86/platform/efi/efi_stub_32.S
+--- linux-2.6.39.4/arch/x86/platform/efi/efi_stub_32.S 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/platform/efi/efi_stub_32.S 2011-08-05 19:44:35.000000000 -0400
@@ -6,6 +6,7 @@
*/
@@ -24117,21 +21183,31 @@ diff -urNp linux-2.6.39.3/arch/x86/platform/efi/efi_stub_32.S linux-2.6.39.3/arc
saved_return_addr:
.long 0
efi_rt_function_ptr:
-diff -urNp linux-2.6.39.3/arch/x86/platform/olpc/olpc_dt.c linux-2.6.39.3/arch/x86/platform/olpc/olpc_dt.c
---- linux-2.6.39.3/arch/x86/platform/olpc/olpc_dt.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/platform/olpc/olpc_dt.c 2011-05-22 19:36:30.000000000 -0400
-@@ -154,7 +154,7 @@ void * __init prom_early_alloc(unsigned
- return res;
+diff -urNp linux-2.6.39.4/arch/x86/platform/mrst/mrst.c linux-2.6.39.4/arch/x86/platform/mrst/mrst.c
+--- linux-2.6.39.4/arch/x86/platform/mrst/mrst.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/platform/mrst/mrst.c 2011-08-05 20:34:06.000000000 -0400
+@@ -239,14 +239,16 @@ static int mrst_i8042_detect(void)
+ }
+
+ /* Reboot and power off are handled by the SCU on a MID device */
+-static void mrst_power_off(void)
++static __noreturn void mrst_power_off(void)
+ {
+ intel_scu_ipc_simple_command(0xf1, 1);
++ BUG();
}
--static struct of_pdt_ops prom_olpc_ops __initdata = {
-+static const struct of_pdt_ops prom_olpc_ops = {
- .nextprop = olpc_dt_nextprop,
- .getproplen = olpc_dt_getproplen,
- .getproperty = olpc_dt_getproperty,
-diff -urNp linux-2.6.39.3/arch/x86/platform/uv/tlb_uv.c linux-2.6.39.3/arch/x86/platform/uv/tlb_uv.c
---- linux-2.6.39.3/arch/x86/platform/uv/tlb_uv.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/platform/uv/tlb_uv.c 2011-05-22 19:36:30.000000000 -0400
+-static void mrst_reboot(void)
++static __noreturn void mrst_reboot(void)
+ {
+ intel_scu_ipc_simple_command(0xf1, 0);
++ BUG();
+ }
+
+ /*
+diff -urNp linux-2.6.39.4/arch/x86/platform/uv/tlb_uv.c linux-2.6.39.4/arch/x86/platform/uv/tlb_uv.c
+--- linux-2.6.39.4/arch/x86/platform/uv/tlb_uv.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/platform/uv/tlb_uv.c 2011-08-05 19:44:35.000000000 -0400
@@ -342,6 +342,8 @@ static void uv_reset_with_ipi(struct bau
cpumask_t mask;
struct reset_args reset_args;
@@ -24141,9 +21217,9 @@ diff -urNp linux-2.6.39.3/arch/x86/platform/uv/tlb_uv.c linux-2.6.39.3/arch/x86/
reset_args.sender = sender;
cpus_clear(mask);
-diff -urNp linux-2.6.39.3/arch/x86/power/cpu.c linux-2.6.39.3/arch/x86/power/cpu.c
---- linux-2.6.39.3/arch/x86/power/cpu.c 2011-05-19 00:06:34.000000000 -0400
-+++ linux-2.6.39.3/arch/x86/power/cpu.c 2011-05-22 19:36:30.000000000 -0400
+diff -urNp linux-2.6.39.4/arch/x86/power/cpu.c linux-2.6.39.4/arch/x86/power/cpu.c
+--- linux-2.6.39.4/arch/x86/power/cpu.c 2011-05-19 00:06:34.000000000 -0400
++++ linux-2.6.39.4/arch/x86/power/cpu.c 2011-08-05 19:44:35.000000000 -0400
@@ -130,7 +130,7 @@ static void do_fpu_end(void)
static void fix_processor_context(void)
{
@@ -24163,9 +21239,9 @@ diff -urNp linux-2.6.39.3/arch/x86/power/cpu.c linux-2.6.39.3/arch/x86/power/cpu