diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2019-03-16 11:31:01 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2019-03-16 11:31:01 +0000 |
commit | 6f1fe3305a2be0a1395569b2ea5f56a93e491ae0 (patch) | |
tree | a4dc6f513504def0942459570f83fe798336d04e /sys/kern/kern_exec.c | |
parent | c1c120b2cb8ece606766642dc20bff611fa89d22 (diff) | |
download | src-6f1fe3305a2be0a1395569b2ea5f56a93e491ae0.tar.gz src-6f1fe3305a2be0a1395569b2ea5f56a93e491ae0.zip |
amd64: Add md process flags and first P_MD_PTI flag.
PTI mode for the process pmap on exec is activated iff P_MD_PTI is set.
On exec, the existing vmspace can be reused only if pti mode of the
pmap matches the P_MD_PTI flag of the process. Add MD
cpu_exec_vmspace_reuse() callback for exec_new_vmspace() which can
vetoed reuse of the existing vmspace.
MFC note: md_flags change struct proc KBI.
Reviewed by: jhb, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D19514
Notes
Notes:
svn path=/head/; revision=345227
Diffstat (limited to 'sys/kern/kern_exec.c')
-rw-r--r-- | sys/kern/kern_exec.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 6bef3f092e11..324e647c5a31 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -1100,7 +1100,8 @@ exec_new_vmspace(struct image_params *imgp, struct sysentvec *sv) else sv_minuser = MAX(sv->sv_minuser, PAGE_SIZE); if (vmspace->vm_refcnt == 1 && vm_map_min(map) == sv_minuser && - vm_map_max(map) == sv->sv_maxuser) { + vm_map_max(map) == sv->sv_maxuser && + cpu_exec_vmspace_reuse(p, map)) { shmexit(vmspace); pmap_remove_pages(vmspace_pmap(vmspace)); vm_map_remove(map, vm_map_min(map), vm_map_max(map)); |