summaryrefslogtreecommitdiffstats
path: root/linux-2.6-i386-nx-emulation.patch
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2010-09-03 11:22:06 -0400
committerDave Jones <davej@redhat.com>2010-09-03 11:22:06 -0400
commit55f50f1d146b2f5d524952234ef1673f196a3b60 (patch)
tree23b3f98246e36b382673365961b44bd21d138180 /linux-2.6-i386-nx-emulation.patch
parenta8df49e8a4fb5b0860f069dbc2ada5109c683058 (diff)
downloadkernel-55f50f1d146b2f5d524952234ef1673f196a3b60.tar.gz
kernel-55f50f1d146b2f5d524952234ef1673f196a3b60.tar.xz
kernel-55f50f1d146b2f5d524952234ef1673f196a3b60.zip
Remove the execshield boot parameter.
Based on a patch from Kees Cook
Diffstat (limited to 'linux-2.6-i386-nx-emulation.patch')
-rw-r--r--linux-2.6-i386-nx-emulation.patch62
1 files changed, 13 insertions, 49 deletions
diff --git a/linux-2.6-i386-nx-emulation.patch b/linux-2.6-i386-nx-emulation.patch
index 224fe0587..2ea7645a1 100644
--- a/linux-2.6-i386-nx-emulation.patch
+++ b/linux-2.6-i386-nx-emulation.patch
@@ -107,7 +107,7 @@
+ * If we have either disabled exec-shield on the boot command line,
+ * or we have NX, then we don't need to do this.
+ */
-+ if (exec_shield != 0) {
++ if (!disable_nx) {
+#ifdef CONFIG_X86_PAE
+ if (!test_cpu_cap(c, X86_FEATURE_NX))
+#endif
@@ -371,19 +371,20 @@
#include <linux/spinlock.h>
#include <linux/errno.h>
#include <linux/init.h>
-@@ -23,6 +24,7 @@ static int __init noexec_setup(char *str)
- disable_nx = 0;
- } else if (!strncmp(str, "off", 3)) {
- disable_nx = 1;
-+ exec_shield = 0;
- }
- x86_configure_nx();
- return 0;
+@@ -6,7 +6,7 @@
+ #include <asm/pgtable.h>
+ #include <asm/proto.h>
+
+-static int disable_nx __cpuinitdata;
++int disable_nx __cpuinitdata;
+
+ /*
+ * noexec = on|off
@@ -40,6 +42,10 @@ void __cpuinit x86_configure_nx(void)
void __init x86_report_nx(void)
{
if (!cpu_has_nx) {
-+ if (exec_shield)
++ if (disable_nx)
+ printk(KERN_INFO "Using x86 segment limits to approximate NX protection\n");
+ else
+
@@ -461,7 +462,7 @@
+ * Turn off the CS limit completely if exec-shield disabled or
+ * NX active:
+ */
-+ if (!exec_shield || executable_stack != EXSTACK_DISABLE_X || (__supported_pte_mask & _PAGE_NX))
++ if (disable_nx || executable_stack != EXSTACK_DISABLE_X || (__supported_pte_mask & _PAGE_NX))
+ arch_add_exec_range(current->mm, -1);
+#endif
+
@@ -474,49 +475,12 @@
struct fs_struct;
struct perf_event_context;
-+extern int exec_shield;
++extern int disable_nx;
+extern int print_fatal_signals;
+
/*
* List of flags we want to share for kernel threads,
* if only because they are not used by them anyway.
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
-@@ -101,6 +101,17 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
- #ifndef CONFIG_MMU
- extern int sysctl_nr_trim_pages;
- #endif
-+
-+int exec_shield = 1;
-+
-+static int __init setup_exec_shield(char *str)
-+{
-+ get_option(&str, &exec_shield);
-+
-+ return 1;
-+}
-+__setup("exec-shield=", setup_exec_shield);
-+
- #ifdef CONFIG_BLOCK
- extern int blk_iopoll_enabled;
- #endif
-@@ -428,6 +448,16 @@ static struct ctl_table kern_table[] = {
- .mode = 0644,
- .proc_handler = proc_dointvec,
- },
-+#ifdef CONFIG_X86_32
-+ {
-+ .procname = "exec-shield",
-+ .data = &exec_shield,
-+ .maxlen = sizeof(int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
-+#endif
-+
- #ifdef CONFIG_PROC_SYSCTL
- {
- .procname = "tainted",
--- b/mm/mmap.c
+++ b/mm/mmap.c
@@ -44,6 +45,18 @@