forked from rpms/kernel
		
	Remove the execshield boot parameter.
Based on a patch from Kees Cook
This commit is contained in:
		
							parent
							
								
									a8df49e8a4
								
							
						
					
					
						commit
						55f50f1d14
					
				| @ -1876,6 +1876,10 @@ fi | ||||
| #                 ||     || | ||||
| 
 | ||||
| %changelog | ||||
| * Fri Sep 03 2010 Dave Jones <davej@redhat.com> | ||||
| - Remove the execshield boot parameter. | ||||
|   Based on a patch from Kees Cook | ||||
| 
 | ||||
| * Thu Sep 02 2010 Chuck Ebbert <cebbert@redhat.com> - 2.6.36-0.15.rc3.git0 | ||||
| - Add patch from ALSA mailing list to try to fix bug #628404 | ||||
| - tpm-fix-stall-on-boot.patch: attempt to fix stalls during boot (#530393) | ||||
|  | ||||
| @ -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 @@
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user