Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_exec.c
Show First 20 Lines • Show All 1,091 Lines • ▼ Show 20 Lines | if (map_at_zero) | ||||
sv_minuser = sv->sv_minuser; | sv_minuser = sv->sv_minuser; | ||||
else | else | ||||
sv_minuser = MAX(sv->sv_minuser, PAGE_SIZE); | sv_minuser = MAX(sv->sv_minuser, PAGE_SIZE); | ||||
if (vmspace->vm_refcnt == 1 && vm_map_min(map) == sv_minuser && | 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) { | ||||
shmexit(vmspace); | shmexit(vmspace); | ||||
pmap_remove_pages(vmspace_pmap(vmspace)); | pmap_remove_pages(vmspace_pmap(vmspace)); | ||||
vm_map_remove(map, vm_map_min(map), vm_map_max(map)); | vm_map_remove(map, vm_map_min(map), vm_map_max(map)); | ||||
map->flags &= ~(MAP_ASLR | MAP_ASLR_IGNSTART); | |||||
} else { | } else { | ||||
error = vmspace_exec(p, sv_minuser, sv->sv_maxuser); | error = vmspace_exec(p, sv_minuser, sv->sv_maxuser); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
vmspace = p->p_vmspace; | vmspace = p->p_vmspace; | ||||
map = &vmspace->vm_map; | map = &vmspace->vm_map; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 635 Lines • Show Last 20 Lines |