Module Name: src Committed By: joerg Date: Sat May 6 21:34:52 UTC 2017
Modified Files: src/lib/libc/sys: mmap.2 mprotect.2 mremap.2 src/share/man/man9: uvm_map.9 src/sys/compat/linux/common: linux_misc.c src/sys/kern: exec_subr.c kern_pax.c src/sys/sys: mman.h pax.h src/sys/uvm: uvm_extern.h uvm_map.c uvm_mmap.c uvm_mremap.c uvm_unix.c src/tests/lib/libc/sys: t_mprotect.c Log Message: Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately. Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections. Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT. Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection. Improve test cases to ensure correct operation of the changed interfaces. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/lib/libc/sys/mmap.2 cvs rdiff -u -r1.24 -r1.25 src/lib/libc/sys/mprotect.2 cvs rdiff -u -r1.4 -r1.5 src/lib/libc/sys/mremap.2 cvs rdiff -u -r1.6 -r1.7 src/share/man/man9/uvm_map.9 cvs rdiff -u -r1.237 -r1.238 src/sys/compat/linux/common/linux_misc.c cvs rdiff -u -r1.76 -r1.77 src/sys/kern/exec_subr.c cvs rdiff -u -r1.58 -r1.59 src/sys/kern/kern_pax.c cvs rdiff -u -r1.51 -r1.52 src/sys/sys/mman.h cvs rdiff -u -r1.25 -r1.26 src/sys/sys/pax.h cvs rdiff -u -r1.203 -r1.204 src/sys/uvm/uvm_extern.h cvs rdiff -u -r1.343 -r1.344 src/sys/uvm/uvm_map.c cvs rdiff -u -r1.163 -r1.164 src/sys/uvm/uvm_mmap.c cvs rdiff -u -r1.18 -r1.19 src/sys/uvm/uvm_mremap.c cvs rdiff -u -r1.47 -r1.48 src/sys/uvm/uvm_unix.c cvs rdiff -u -r1.6 -r1.7 src/tests/lib/libc/sys/t_mprotect.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.