rpms/kernel/devel kernel.spec, 1.2066, 1.2067 linux-2.6-execshield.patch, 1.118, 1.119 linux-2.6-execshield-no-randomization.patch, 1.1, NONE

roland roland at fedoraproject.org
Thu Jul 8 01:54:51 UTC 2010


Author: roland

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv4636

Modified Files:
	kernel.spec linux-2.6-execshield.patch 
Removed Files:
	linux-2.6-execshield-no-randomization.patch 
Log Message:
Remove exec-shield=2 setting, some other cruft from execshield.


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.2066
retrieving revision 1.2067
diff -u -p -r1.2066 -r1.2067
--- kernel.spec	7 Jul 2010 22:50:34 -0000	1.2066
+++ kernel.spec	8 Jul 2010 01:54:49 -0000	1.2067
@@ -605,7 +605,6 @@ Patch32: utrace-remove-use-of-kref_set.p
 Patch150: linux-2.6.29-sparc-IOC_TYPECHECK.patch
 
 Patch160: linux-2.6-execshield.patch
-Patch161: linux-2.6-execshield-no-randomization.patch
 
 Patch200: linux-2.6-debug-sizeof-structs.patch
 Patch201: linux-2.6-debug-nmi-timeout.patch
@@ -1126,7 +1125,6 @@ ApplyPatch linux-2.6.29-sparc-IOC_TYPECH
 # Exec shield
 #
 ApplyPatch linux-2.6-execshield.patch
-ApplyPatch linux-2.6-execshield-no-randomization.patch
 
 #
 # bugfixes to drivers and filesystems
@@ -1856,6 +1854,9 @@ fi
 #                 ||     ||
 
 %changelog
+* Thu Jul  8 2010 Roland McGrath <roland at redhat.com>
+- Remove exec-shield=2 setting, some other cruft from execshield.
+
 * Wed Jul  7 2010 Roland McGrath <roland at redhat.com> 2.6.35-0.29.rc4.git0.fc14
 - Revamp perf packaging.
 

linux-2.6-execshield.patch:
 arch/x86/include/asm/desc.h           |   25 ++++++
 arch/x86/include/asm/mmu.h            |    7 +
 arch/x86/include/asm/paravirt.h       |    6 +
 arch/x86/include/asm/paravirt_types.h |    3 
 arch/x86/kernel/cpu/common.c          |   16 ++++
 arch/x86/kernel/paravirt.c            |    3 
 arch/x86/kernel/process_32.c          |   48 ++++++++++++
 arch/x86/kernel/traps.c               |  131 +++++++++++++++++++++++++++++++---
 arch/x86/mm/mmap.c                    |    3 
 arch/x86/mm/setup_nx.c                |    6 +
 arch/x86/mm/tlb.c                     |    7 +
 arch/x86/vdso/vdso32-setup.c          |    2 
 arch/x86/xen/enlighten.c              |   21 +++++
 b/mm/mmap.c                           |  118 ++++++++++++++++++++++++++++--
 fs/binfmt_elf.c                       |    9 ++
 include/linux/mm.h                    |    8 +-
 include/linux/mm_types.h              |    3 
 include/linux/sched.h                 |    7 +
 kernel/sysctl.c                       |   21 +++++
 mm/mprotect.c                         |   10 ++
 mm/mremap.c                           |    4 -
 21 files changed, 437 insertions(+), 21 deletions(-)

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-execshield.patch,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -p -r1.118 -r1.119
--- linux-2.6-execshield.patch	22 Jun 2010 16:02:00 -0000	1.118
+++ linux-2.6-execshield.patch	8 Jul 2010 01:54:50 -0000	1.119
@@ -1,5 +1,3 @@
-diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
-index 617bd56..526248d 100644
 --- a/arch/x86/include/asm/desc.h
 +++ b/arch/x86/include/asm/desc.h
 @@ -5,6 +5,7 @@
@@ -46,8 +44,6 @@ index 617bd56..526248d 100644
 +#endif /* CONFIG_X86_32 */
 +
  #endif /* _ASM_X86_DESC_H */
-diff --git a/arch/x86/include/asm/mmu.h b/arch/x86/include/asm/mmu.h
-index 80a1dee..8314c66 100644
 --- a/arch/x86/include/asm/mmu.h
 +++ b/arch/x86/include/asm/mmu.h
 @@ -7,12 +7,19 @@
@@ -70,8 +66,6 @@ index 80a1dee..8314c66 100644
  } mm_context_t;
  
  #ifdef CONFIG_SMP
-diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
-index 5653f43..55dadb2 100644
 --- a/arch/x86/include/asm/paravirt.h
 +++ b/arch/x86/include/asm/paravirt.h
 @@ -289,6 +289,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
@@ -87,8 +81,6 @@ index 5653f43..55dadb2 100644
  static inline void store_gdt(struct desc_ptr *dtr)
  {
  	PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
-diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
-index db9ef55..19c2793 100644
 --- a/arch/x86/include/asm/paravirt_types.h
 +++ b/arch/x86/include/asm/paravirt_types.h
 @@ -118,6 +118,9 @@ struct pv_cpu_ops {
@@ -101,28 +93,13 @@ index db9ef55..19c2793 100644
  	unsigned long (*store_tr)(void);
  	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
  #ifdef CONFIG_X86_64
-diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index 7e5c6a6..9de0cba 100644
---- a/arch/x86/include/asm/processor.h
-+++ b/arch/x86/include/asm/processor.h
-@@ -158,6 +158,9 @@ static inline int hlt_works(int cpu)
- 
- #define cache_line_size()	(boot_cpu_data.x86_cache_alignment)
- 
-+#define __HAVE_ARCH_ALIGN_STACK
-+extern unsigned long arch_align_stack(unsigned long sp);
-+
- extern void cpu_detect(struct cpuinfo_x86 *c);
- 
- extern struct pt_regs *idle_regs(struct pt_regs *);
-diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index 68e4a6f..40f5bb7 100644
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
-@@ -802,6 +802,20 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
+@@ -802,6 +802,22 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
  	/* Filter out anything that depends on CPUID levels we don't have */
  	filter_cpuid_features(c, true);
  
++#ifdef CONFIG_X86_32
 +	/*
 +	 *  emulation of NX with segment limits unfortunately means
 +	 *  we have to disable the fast system calls, due to the way that
@@ -136,12 +113,11 @@ index 68e4a6f..40f5bb7 100644
 +#endif
 +			clear_cpu_cap(c, X86_FEATURE_SEP);
 +	}
++#endif
 +
  	/* If the model name is still unset, do table lookup. */
  	if (!c->x86_model_id[0]) {
  		const char *p;
-diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index 1db183e..238b97d 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
 @@ -345,6 +345,9 @@ struct pv_cpu_ops pv_cpu_ops = {
@@ -154,8 +130,6 @@ index 1db183e..238b97d 100644
  	.load_gdt = native_load_gdt,
  	.load_idt = native_load_idt,
  	.store_gdt = native_store_gdt,
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 8d12878..fde71df 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
 @@ -243,7 +243,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
@@ -232,8 +206,6 @@ index 8d12878..fde71df 100644
 +	mm->context.exec_limit = 0;
 +	set_user_cs(&mm->context.user_cs, 0);
 +}
-diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 142d70c..82a48b8 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
 @@ -109,6 +109,78 @@ static inline void preempt_conditional_cli(struct pt_regs *regs)
@@ -392,16 +364,13 @@ index 142d70c..82a48b8 100644
  }
  #endif
  
-diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 1dab519..360f39d 100644
 --- a/arch/x86/mm/mmap.c
 +++ b/arch/x86/mm/mmap.c
 @@ -124,13 +124,16 @@ static unsigned long mmap_legacy_base(void)
   */
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
--	if (mmap_is_legacy()) {
-+	if (!(2 & exec_shield) && mmap_is_legacy()) {
+ 	if (mmap_is_legacy()) {
  		mm->mmap_base = mmap_legacy_base();
  		mm->get_unmapped_area = arch_get_unmapped_area;
  		mm->unmap_area = arch_unmap_area;
@@ -414,8 +383,6 @@ index 1dab519..360f39d 100644
  		mm->unmap_area = arch_unmap_area_topdown;
  	}
  }
-diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
-index a3250aa..e0d9cce 100644
 --- a/arch/x86/mm/setup_nx.c
 +++ b/arch/x86/mm/setup_nx.c
 @@ -1,3 +1,4 @@
@@ -442,8 +409,6 @@ index a3250aa..e0d9cce 100644
  		printk(KERN_NOTICE "Notice: NX (Execute Disable) protection "
  		       "missing in CPU or disabled in BIOS!\n");
  	} else {
-diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
-index 426f3a1..e0286b1 100644
 --- a/arch/x86/mm/tlb.c
 +++ b/arch/x86/mm/tlb.c
 @@ -6,6 +6,7 @@
@@ -467,8 +432,6 @@ index 426f3a1..e0286b1 100644
  	/*
  	 * orig_rax contains the negated interrupt vector.
  	 * Use that to determine where the sender put the data.
-diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
-index 02b442e..957bb67 100644
 --- a/arch/x86/vdso/vdso32-setup.c
 +++ b/arch/x86/vdso/vdso32-setup.c
 @@ -331,7 +331,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
@@ -480,8 +443,6 @@ index 02b442e..957bb67 100644
  		if (IS_ERR_VALUE(addr)) {
  			ret = addr;
  			goto up_fail;
-diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 65d8d79..1ea06f8 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -335,6 +335,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
@@ -519,31 +480,8 @@ index 65d8d79..1ea06f8 100644
  	.load_gdt = xen_load_gdt,
  	.load_idt = xen_load_idt,
  	.load_tls = xen_load_tls,
-diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index 535e763..d114af6 100644
 --- a/fs/binfmt_elf.c
 +++ b/fs/binfmt_elf.c
-@@ -74,7 +74,7 @@ static struct linux_binfmt elf_format = {
- 		.hasvdso	= 1
- };
- 
--#define BAD_ADDR(x) ((unsigned long)(x) >= TASK_SIZE)
-+#define BAD_ADDR(x) IS_ERR_VALUE(x)
- 
- static int set_brk(unsigned long start, unsigned long end)
- {
-@@ -701,6 +701,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
- 			break;
- 		}
- 
-+	if (current->personality == PER_LINUX && (exec_shield & 2)) {
-+		executable_stack = EXSTACK_DISABLE_X;
-+		current->flags |= PF_RANDOMIZE;
-+	}
-+
- 	/* Some simple consistency checks for the interpreter */
- 	if (elf_interpreter) {
- 		retval = -ELIBBAD;
 @@ -717,6 +722,15 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
  	if (retval)
  		goto out_free_dentry;
@@ -560,27 +498,6 @@ index 535e763..d114af6 100644
  	/* OK, This is the point of no return */
  	current->flags &= ~PF_FORKNOEXEC;
  	current->mm->def_flags = def_flags;
-@@ -724,7 +738,8 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
- 	/* Do this immediately, since STACK_TOP as used in setup_arg_pages
- 	   may depend on the personality.  */
- 	SET_PERSONALITY(loc->elf_ex);
--	if (elf_read_implies_exec(loc->elf_ex, executable_stack))
-+	if (!(exec_shield & 2) &&
-+			elf_read_implies_exec(loc->elf_ex, executable_stack))
- 		current->personality |= READ_IMPLIES_EXEC;
- 
- 	if (!(current->personality & ADDR_NO_RANDOMIZE) && randomize_va_space)
-@@ -890,7 +905,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
- 					    interpreter,
- 					    &interp_map_addr,
- 					    load_bias);
--		if (!IS_ERR((void *)elf_entry)) {
-+		if (!BAD_ADDR(elf_entry)) {
- 			/*
- 			 * load_elf_interp() returns relocation
- 			 * adjustment
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index b969efb..19c41b0 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
 @@ -1263,7 +1263,13 @@ extern int install_special_mapping(struct mm_struct *mm,
@@ -598,8 +515,6 @@ index b969efb..19c41b0 100644
  
  extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
  	unsigned long len, unsigned long prot,
-diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index b8bb9a6..f478e39 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
 @@ -227,6 +227,9 @@ struct mm_struct {
@@ -612,25 +527,6 @@ index b8bb9a6..f478e39 100644
  	void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
  #endif
  	unsigned long mmap_base;		/* base of mmap area */
-diff --git a/include/linux/resource.h b/include/linux/resource.h
-index f1e914e..d2aef9a 100644
---- a/include/linux/resource.h
-+++ b/include/linux/resource.h
-@@ -53,8 +53,11 @@ struct rlimit {
- /*
-  * Limit the stack by to some sane default: root can always
-  * increase this limit if needed..  8MB seems reasonable.
-+ *
-+ * (2MB more to cover randomization effects.)
-  */
--#define _STK_LIM	(8*1024*1024)
-+#define _STK_LIM	(10*1024*1024)
-+#define EXEC_STACK_BIAS	(2*1024*1024)
- 
- /*
-  * GPG2 wants 64kB of mlocked memory, to make sure pass phrases
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index f118809..043ad8e 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
 @@ -101,6 +101,9 @@ struct bio_list;
@@ -654,25 +550,14 @@ index f118809..043ad8e 100644
  extern unsigned long
  arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
  			  unsigned long len, unsigned long pgoff,
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index d24f761..fdb581b 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -101,6 +101,26 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
+@@ -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<<0);
-+/* exec_shield is a bitmask:
-+ * 0: off; vdso at STACK_TOP, 1 page below TASK_SIZE
-+ * (1<<0) 1: on [also on if !=0]
-+ * (1<<1) 2: force noexecstack regardless of PT_GNU_STACK
-+ * The old settings
-+ * (1<<2) 4: vdso just below .text of main (unless too low)
-+ * (1<<3) 8: vdso just below .text of PT_INTERP (unless too low)
-+ * are ignored because the vdso is placed completely randomly
-+ */
++int exec_shield = 1;
 +
 +static int __init setup_exec_shield(char *str)
 +{
@@ -685,10 +570,11 @@ index d24f761..fdb581b 100644
  #ifdef CONFIG_BLOCK
  extern int blk_iopoll_enabled;
  #endif
-@@ -428,6 +448,14 @@ static struct ctl_table kern_table[] = {
+@@ -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,
@@ -696,13 +582,12 @@ index d24f761..fdb581b 100644
 +		.mode		= 0644,
 +		.proc_handler	= &proc_dointvec,
 +	},
++#endif
 +
  #ifdef CONFIG_PROC_SYSCTL
  	{
  		.procname	= "tainted",
-diff --git a/mm/mmap.c b/mm/mmap.c
-index 456ec6f..9351762 100644
---- a/mm/mmap.c
+--- b/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -28,6 +28,7 @@
  #include <linux/rmap.h>
@@ -731,7 +616,7 @@ index 456ec6f..9351762 100644
  static void unmap_region(struct mm_struct *mm,
  		struct vm_area_struct *vma, struct vm_area_struct *prev,
  		unsigned long start, unsigned long end);
-@@ -388,6 +401,8 @@ static inline void
+@@ -388,6 +401,8 @@
  __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
  		struct vm_area_struct *prev, struct rb_node *rb_parent)
  {
@@ -740,7 +625,7 @@ index 456ec6f..9351762 100644
  	if (prev) {
  		vma->vm_next = prev->vm_next;
  		prev->vm_next = vma;
-@@ -489,6 +504,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -489,6 +504,8 @@
  	rb_erase(&vma->vm_rb, &mm->mm_rb);
  	if (mm->mmap_cache == vma)
  		mm->mmap_cache = prev;
@@ -749,7 +634,7 @@ index 456ec6f..9351762 100644
  }
  
  /*
-@@ -790,6 +807,8 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
+@@ -790,6 +807,8 @@
  		} else					/* cases 2, 5, 7 */
  			err = vma_adjust(prev, prev->vm_start,
  				end, prev->vm_pgoff, NULL);
@@ -758,7 +643,7 @@ index 456ec6f..9351762 100644
  		if (err)
  			return NULL;
  		return prev;
-@@ -982,7 +1001,8 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -982,7 +1001,8 @@
  	/* Obtain the address to map to. we verify (or select) it and ensure
  	 * that it represents a valid section of the address space.
  	 */
@@ -768,7 +653,7 @@ index 456ec6f..9351762 100644
  	if (addr & ~PAGE_MASK)
  		return addr;
  
-@@ -1534,8 +1554,8 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1534,8 +1554,8 @@
  }
  
  unsigned long
@@ -779,7 +664,7 @@ index 456ec6f..9351762 100644
  {
  	unsigned long (*get_area)(struct file *, unsigned long,
  				  unsigned long, unsigned long, unsigned long);
-@@ -1548,7 +1568,11 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
+@@ -1548,7 +1568,11 @@
  	if (len > TASK_SIZE)
  		return -ENOMEM;
  
@@ -792,12 +677,18 @@ index 456ec6f..9351762 100644
  	if (file && file->f_op && file->f_op->get_unmapped_area)
  		get_area = file->f_op->get_unmapped_area;
  	addr = get_area(file, addr, len, pgoff, flags);
-@@ -1562,8 +1586,76 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
+@@ -1562,8 +1586,83 @@
  
  	return arch_rebalance_pgtables(addr, len);
  }
 +EXPORT_SYMBOL(get_unmapped_area_prot);
 +
++static bool should_randomize(void)
++{
++	return (current->flags & PF_RANDOMIZE) &&
++		!(current->personality & ADDR_NO_RANDOMIZE);
++}
++
 +#define SHLIB_BASE	0x00110000
 +
 +unsigned long
@@ -816,7 +707,8 @@ index 456ec6f..9351762 100644
 +		return addr;
 +
 +	if (!addr)
-+		addr = randomize_range(SHLIB_BASE, 0x01000000, len);
++		addr = !should_randomize() ? SHLIB_BASE :
++			randomize_range(SHLIB_BASE, 0x01000000, len);
 +
 +	if (addr) {
 +		addr = PAGE_ALIGN(addr);
@@ -844,7 +736,7 @@ index 456ec6f..9351762 100644
 +			 * Up until the brk area we randomize addresses
 +			 * as much as possible:
 +			 */
-+			if (addr >= 0x01000000) {
++			if (addr >= 0x01000000 && should_randomize()) {
 +				tmp = randomize_range(0x01000000,
 +					PAGE_ALIGN(max(mm->start_brk,
 +					(unsigned long)0x08000000)), len);
@@ -870,33 +762,7 @@ index 456ec6f..9351762 100644
  
  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
  struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
-@@ -1638,6 +1730,16 @@ out:
- 	return prev ? prev->vm_next : vma;
- }
- 
-+static int over_stack_limit(unsigned long sz)
-+{
-+	struct rlimit *rlim = current->signal->rlim;
-+
-+	if (sz < EXEC_STACK_BIAS)
-+		return 0;
-+	return (sz - EXEC_STACK_BIAS) >
-+			ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur);
-+}
-+
- /*
-  * Verify that the stack growth is acceptable and
-  * update accounting. This is shared with both the
-@@ -1654,7 +1756,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
- 		return -ENOMEM;
- 
- 	/* Stack limit test */
--	if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur))
-+	if (over_stack_limit(size))
- 		return -ENOMEM;
- 
- 	/* mlock limit tests */
-@@ -1966,10 +2068,14 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1966,10 +2075,14 @@
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
  
@@ -913,7 +779,7 @@ index 456ec6f..9351762 100644
  		err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
  	/* Success. */
-@@ -2254,6 +2360,7 @@ void exit_mmap(struct mm_struct *mm)
+@@ -2254,6 +2367,7 @@
  
  	free_pgtables(tlb, vma, FIRST_USER_ADDRESS, 0);
  	tlb_finish_mmu(tlb, 0, end);
@@ -921,8 +787,6 @@ index 456ec6f..9351762 100644
  
  	/*
  	 * Walk the list again, actually closing and freeing it,
-diff --git a/mm/mprotect.c b/mm/mprotect.c
-index 2d1bf7c..4ea460e 100644
 --- a/mm/mprotect.c
 +++ b/mm/mprotect.c
 @@ -25,9 +25,14 @@
@@ -959,8 +823,6 @@ index 2d1bf7c..4ea460e 100644
  	mmu_notifier_invalidate_range_start(mm, start, end);
  	if (is_vm_hugetlb_page(vma))
  		hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
-diff --git a/mm/mremap.c b/mm/mremap.c
-index cde56ee..4c65678 100644
 --- a/mm/mremap.c
 +++ b/mm/mremap.c
 @@ -487,10 +487,10 @@ unsigned long do_mremap(unsigned long addr,


--- linux-2.6-execshield-no-randomization.patch DELETED ---



More information about the scm-commits mailing list