Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/link_elf.c
Show First 20 Lines • Show All 1,218 Lines • ▼ Show 20 Lines | for (i = 0; i < nsegs; i++) { | ||||
if ((segs[i]->p_flags & PF_W) != 0) | if ((segs[i]->p_flags & PF_W) != 0) | ||||
prot |= VM_PROT_WRITE; | prot |= VM_PROT_WRITE; | ||||
if ((segs[i]->p_flags & PF_X) != 0) | if ((segs[i]->p_flags & PF_X) != 0) | ||||
prot |= VM_PROT_EXECUTE; | prot |= VM_PROT_EXECUTE; | ||||
segbase = mapbase + segs[i]->p_vaddr - base_vaddr; | segbase = mapbase + segs[i]->p_vaddr - base_vaddr; | ||||
error = vm_map_protect(kernel_map, | error = vm_map_protect(kernel_map, | ||||
(vm_offset_t)segbase, | (vm_offset_t)segbase, | ||||
(vm_offset_t)segbase + round_page(segs[i]->p_memsz), | (vm_offset_t)segbase + round_page(segs[i]->p_memsz), | ||||
prot, FALSE); | prot, 0, VM_MAP_PROTECT_SET_PROT); | ||||
if (error != KERN_SUCCESS) { | if (error != KERN_SUCCESS) { | ||||
error = ENOMEM; | error = ENOMEM; | ||||
goto out; | goto out; | ||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 707 Lines • Show Last 20 Lines |