Module Name:    src
Committed By:   christos
Date:           Sun May 22 14:26:10 UTC 2016

Modified Files:
        src/sys/kern: exec_elf.c exec_subr.c init_main.c kern_exec.c kern_pax.c
        src/sys/sys: pax.h
        src/sys/uvm: uvm_mmap.c

Log Message:
reduce #ifdef mess caused by PaX


To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 src/sys/kern/exec_elf.c
cvs rdiff -u -r1.75 -r1.76 src/sys/kern/exec_subr.c
cvs rdiff -u -r1.479 -r1.480 src/sys/kern/init_main.c
cvs rdiff -u -r1.429 -r1.430 src/sys/kern/kern_exec.c
cvs rdiff -u -r1.48 -r1.49 src/sys/kern/kern_pax.c
cvs rdiff -u -r1.20 -r1.21 src/sys/sys/pax.h
cvs rdiff -u -r1.156 -r1.157 src/sys/uvm/uvm_mmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/exec_elf.c
diff -u src/sys/kern/exec_elf.c:1.83 src/sys/kern/exec_elf.c:1.84
--- src/sys/kern/exec_elf.c:1.83	Sat May  7 21:28:09 2016
+++ src/sys/kern/exec_elf.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec_elf.c,v 1.83 2016/05/08 01:28:09 christos Exp $	*/
+/*	$NetBSD: exec_elf.c,v 1.84 2016/05/22 14:26:09 christos Exp $	*/
 
 /*-
  * Copyright (c) 1994, 2000, 2005, 2015 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.83 2016/05/08 01:28:09 christos Exp $");
+__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.84 2016/05/22 14:26:09 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_pax.h"
@@ -124,9 +124,6 @@ elf_placedynexec(struct exec_package *ep
 		if (ph[i].p_type == PT_LOAD && ph[i].p_align > align)
 			align = ph[i].p_align;
 
-#ifndef PAX_ASLR
-# define pax_aslr_exec_offset(epp, align) MAX(align, PAGE_SIZE)
-#endif
 	offset = (Elf_Addr)pax_aslr_exec_offset(epp, align);
 	offset += epp->ep_vm_minaddr;
 
@@ -929,13 +926,9 @@ netbsd_elf_signature(struct lwp *l, stru
 			    ELF_NOTE_PAX_NAMESZ) == 0) {
 				uint32_t flags;
 				memcpy(&flags, ndesc, sizeof(flags));
-#if defined(PAX_MPROTECT) || defined(PAX_SEGVGUARD) || defined(PAX_ASLR)
 				/* Convert the flags and insert them into
 				 * the exec package. */
 				pax_setup_elf_flags(epp, flags);
-#else
-				(void)flags; /* UNUSED */
-#endif /* PAX_MPROTECT || PAX_SEGVGUARD || PAX_ASLR */
 				break;
 			}
 			BADNOTE("PaX tag");

Index: src/sys/kern/exec_subr.c
diff -u src/sys/kern/exec_subr.c:1.75 src/sys/kern/exec_subr.c:1.76
--- src/sys/kern/exec_subr.c:1.75	Fri May 13 13:33:43 2016
+++ src/sys/kern/exec_subr.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec_subr.c,v 1.75 2016/05/13 17:33:43 christos Exp $	*/
+/*	$NetBSD: exec_subr.c,v 1.76 2016/05/22 14:26:09 christos Exp $	*/
 
 /*
  * Copyright (c) 1993, 1994, 1996 Christopher G. Demetriou
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: exec_subr.c,v 1.75 2016/05/13 17:33:43 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: exec_subr.c,v 1.76 2016/05/22 14:26:09 christos Exp $");
 
 #include "opt_pax.h"
 
@@ -394,9 +394,7 @@ exec_setup_stack(struct lwp *l, struct e
 	DPRINTF(("ep_minsaddr=%#jx max_stack_size=%#jx\n",
 	    (uintmax_t)epp->ep_minsaddr, (uintmax_t)max_stack_size));
 
-#ifdef PAX_ASLR
 	pax_aslr_stack(epp, &max_stack_size);
-#endif /* PAX_ASLR */
 
 	DPRINTF(("[RLIMIT_STACK].lim_cur=%#jx max_stack_size=%#jx\n",
 	    (uintmax_t)l->l_proc->p_rlimit[RLIMIT_STACK].rlim_cur,

Index: src/sys/kern/init_main.c
diff -u src/sys/kern/init_main.c:1.479 src/sys/kern/init_main.c:1.480
--- src/sys/kern/init_main.c:1.479	Mon Mar 28 12:45:44 2016
+++ src/sys/kern/init_main.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: init_main.c,v 1.479 2016/03/28 16:45:44 macallan Exp $	*/
+/*	$NetBSD: init_main.c,v 1.480 2016/05/22 14:26:09 christos Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.479 2016/03/28 16:45:44 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.480 2016/05/22 14:26:09 christos Exp $");
 
 #include "opt_ddb.h"
 #include "opt_inet.h"
@@ -198,9 +198,7 @@ extern void *_binary_splash_image_end;
 #include <sys/syscall.h>
 #include <sys/syscallargs.h>
 
-#if defined(PAX_MPROTECT) || defined(PAX_SEGVGUARD) || defined(PAX_ASLR)
 #include <sys/pax.h>
-#endif /* PAX_MPROTECT || PAX_SEGVGUARD || PAX_ASLR */
 
 #include <secmodel/secmodel.h>
 
@@ -527,9 +525,7 @@ main(void)
 	veriexec_init();
 #endif /* NVERIEXEC > 0 */
 
-#if defined(PAX_MPROTECT) || defined(PAX_SEGVGUARD) || defined(PAX_ASLR)
 	pax_init();
-#endif /* PAX_MPROTECT || PAX_SEGVGUARD || PAX_ASLR */
 
 #ifdef	IPSEC
 	/* Attach network crypto subsystem */

Index: src/sys/kern/kern_exec.c
diff -u src/sys/kern/kern_exec.c:1.429 src/sys/kern/kern_exec.c:1.430
--- src/sys/kern/kern_exec.c:1.429	Tue May 10 22:18:27 2016
+++ src/sys/kern/kern_exec.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_exec.c,v 1.429 2016/05/11 02:18:27 ozaki-r Exp $	*/
+/*	$NetBSD: kern_exec.c,v 1.430 2016/05/22 14:26:09 christos Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.429 2016/05/11 02:18:27 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.430 2016/05/22 14:26:09 christos Exp $");
 
 #include "opt_exec.h"
 #include "opt_execfmt.h"
@@ -761,12 +761,6 @@ execve_loadvm(struct lwp *l, const char 
 	 * Calculate the new stack size.
 	 */
 
-#ifdef PAX_ASLR
-#define	ASLR_GAP(epp)	pax_aslr_stack_gap(epp)
-#else
-#define	ASLR_GAP(epp)	0
-#endif
-
 #ifdef __MACHINE_STACK_GROWS_UP
 /*
  * copyargs() fills argc/argv/envp from the lower address even on
@@ -782,7 +776,7 @@ execve_loadvm(struct lwp *l, const char 
 
 	data->ed_argslen = calcargs(data, argenvstrlen);
 
-	const size_t len = calcstack(data, ASLR_GAP(epp) + RTLD_GAP);
+	const size_t len = calcstack(data, pax_aslr_stack_gap(epp) + RTLD_GAP);
 
 	if (len > epp->ep_ssize) {
 		/* in effect, compare to initial limit */
@@ -1164,9 +1158,7 @@ execve_runproc(struct lwp *l, struct exe
 	vm->vm_maxsaddr = (void *)epp->ep_maxsaddr;
 	vm->vm_minsaddr = (void *)epp->ep_minsaddr;
 
-#ifdef PAX_ASLR
 	pax_aslr_init_vm(l, vm, epp);
-#endif /* PAX_ASLR */
 
 	/* Now map address space. */
 	error = execve_dovmcmds(l, data);

Index: src/sys/kern/kern_pax.c
diff -u src/sys/kern/kern_pax.c:1.48 src/sys/kern/kern_pax.c:1.49
--- src/sys/kern/kern_pax.c:1.48	Sat May 21 21:09:09 2016
+++ src/sys/kern/kern_pax.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_pax.c,v 1.48 2016/05/22 01:09:09 christos Exp $	*/
+/*	$NetBSD: kern_pax.c,v 1.49 2016/05/22 14:26:09 christos Exp $	*/
 
 /*
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_pax.c,v 1.48 2016/05/22 01:09:09 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_pax.c,v 1.49 2016/05/22 14:26:09 christos Exp $");
 
 #include "opt_pax.h"
 
@@ -451,13 +451,13 @@ pax_aslr_elf_flags_active(uint32_t flags
 	return true;
 }
 
-bool
+static bool
 pax_aslr_epp_active(struct exec_package *epp)
 {
 	return pax_flags_active(epp->ep_pax_flags, P_PAX_ASLR);
 }
 
-bool
+static bool
 pax_aslr_active(struct lwp *l)
 {
 	return pax_flags_active(l->l_proc->p_pax, P_PAX_ASLR);

Index: src/sys/sys/pax.h
diff -u src/sys/sys/pax.h:1.20 src/sys/sys/pax.h:1.21
--- src/sys/sys/pax.h:1.20	Sat May  7 21:28:09 2016
+++ src/sys/sys/pax.h	Sun May 22 10:26:10 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: pax.h,v 1.20 2016/05/08 01:28:09 christos Exp $ */
+/* $NetBSD: pax.h,v 1.21 2016/05/22 14:26:10 christos Exp $ */
 
 /*-
  * Copyright (c) 2006 Elad Efrat <e...@netbsd.org>
@@ -52,8 +52,14 @@ struct vmspace;
 extern int pax_aslr_debug;
 #endif
 
+#if defined(PAX_MPROTECT) || defined(PAX_SEGVGUARD) || defined(PAX_ASLR)
 void pax_init(void);
 void pax_setup_elf_flags(struct exec_package *, uint32_t);
+#else
+# define pax_init()
+# define pax_setup_elf_flags(e, flags) __USE(flags)
+#endif
+
 void pax_mprotect_adjust(
 #ifdef PAX_MPROTECT_DEBUG
     const char *, size_t,
@@ -75,12 +81,18 @@ int pax_segvguard(struct lwp *, struct v
 #define	PAX_ASLR_DELTA(delta, lsb, len)	\
     (((delta) & ((1UL << (len)) - 1)) << (lsb))
 
-bool pax_aslr_epp_active(struct exec_package *);
-bool pax_aslr_active(struct lwp *);
+#ifdef PAX_ASLR
 void pax_aslr_init_vm(struct lwp *, struct vmspace *, struct exec_package *);
 void pax_aslr_stack(struct exec_package *, u_long *);
 uint32_t pax_aslr_stack_gap(struct exec_package *);
 vaddr_t pax_aslr_exec_offset(struct exec_package *, vaddr_t);
 void pax_aslr_mmap(struct lwp *, vaddr_t *, vaddr_t, int);
+#else
+# define pax_aslr_init_vm(l, v, e)
+# define pax_aslr_stack(e, o)
+# define pax_aslr_stack_gap(e)	0
+# define pax_aslr_exec_offset(e, a) MAX(a, PAGE_SIZE)
+# define pax_aslr_mmap(l, a, b, c)
+#endif
 
 #endif /* !_SYS_PAX_H_ */

Index: src/sys/uvm/uvm_mmap.c
diff -u src/sys/uvm/uvm_mmap.c:1.156 src/sys/uvm/uvm_mmap.c:1.157
--- src/sys/uvm/uvm_mmap.c:1.156	Thu Apr  7 08:07:36 2016
+++ src/sys/uvm/uvm_mmap.c	Sun May 22 10:26:09 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_mmap.c,v 1.156 2016/04/07 12:07:36 christos Exp $	*/
+/*	$NetBSD: uvm_mmap.c,v 1.157 2016/05/22 14:26:09 christos Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_mmap.c,v 1.156 2016/04/07 12:07:36 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_mmap.c,v 1.157 2016/05/22 14:26:09 christos Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_pax.h"
@@ -417,9 +417,7 @@ sys_mmap(struct lwp *l, const struct sys
 
 	PAX_MPROTECT_ADJUST(l, &prot, &maxprot);
 
-#ifdef PAX_ASLR
 	pax_aslr_mmap(l, &addr, orig_addr, flags);
-#endif /* PAX_ASLR */
 
 	/*
 	 * now let kernel internal function uvm_mmap do the work.

Reply via email to