aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_exec.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2019-03-16 11:31:01 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2019-03-16 11:31:01 +0000
commit6f1fe3305a2be0a1395569b2ea5f56a93e491ae0 (patch)
treea4dc6f513504def0942459570f83fe798336d04e /sys/kern/kern_exec.c
parentc1c120b2cb8ece606766642dc20bff611fa89d22 (diff)
downloadsrc-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.c3
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));