summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/imgact_elf.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index 7fd6a64..6eb3a91 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -237,8 +237,7 @@ __elfN(check_header)(const Elf_Ehdr *hdr)
static int
__elfN(map_partial)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
- vm_offset_t start, vm_offset_t end, vm_prot_t prot,
- vm_prot_t max)
+ vm_offset_t start, vm_offset_t end, vm_prot_t prot)
{
struct sf_buf *sf;
int error;
@@ -248,8 +247,8 @@ __elfN(map_partial)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
* Create the page if it doesn't exist yet. Ignore errors.
*/
vm_map_lock(map);
- vm_map_insert(map, NULL, 0, trunc_page(start), round_page(end), max,
- max, 0);
+ vm_map_insert(map, NULL, 0, trunc_page(start), round_page(end),
+ VM_PROT_ALL, VM_PROT_ALL, 0);
vm_map_unlock(map);
/*
@@ -273,8 +272,7 @@ __elfN(map_partial)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
static int
__elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
- vm_offset_t start, vm_offset_t end, vm_prot_t prot,
- vm_prot_t max, int cow)
+ vm_offset_t start, vm_offset_t end, vm_prot_t prot, int cow)
{
struct sf_buf *sf;
vm_offset_t off;
@@ -283,7 +281,7 @@ __elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
if (start != trunc_page(start)) {
rv = __elfN(map_partial)(map, object, offset, start,
- round_page(start), prot, max);
+ round_page(start), prot);
if (rv)
return (rv);
offset += round_page(start) - start;
@@ -291,7 +289,7 @@ __elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
}
if (end != round_page(end)) {
rv = __elfN(map_partial)(map, object, offset +
- trunc_page(end) - start, trunc_page(end), end, prot, max);
+ trunc_page(end) - start, trunc_page(end), end, prot);
if (rv)
return (rv);
end = trunc_page(end);
@@ -303,7 +301,7 @@ __elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
* to copy the data. Sigh.
*/
rv = vm_map_find(map, NULL, 0, &start, end - start,
- FALSE, prot | VM_PROT_WRITE, max, 0);
+ FALSE, prot | VM_PROT_WRITE, VM_PROT_ALL, 0);
if (rv)
return (rv);
if (object == NULL)
@@ -328,7 +326,7 @@ __elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
} else {
vm_map_lock(map);
rv = vm_map_insert(map, object, offset, start, end,
- prot, max, cow);
+ prot, VM_PROT_ALL, cow);
vm_map_unlock(map);
}
return (rv);
@@ -350,8 +348,6 @@ __elfN(load_section)(struct proc *p, struct vmspace *vmspace,
size_t copy_len;
vm_offset_t file_addr;
- error = 0;
-
/*
* It's necessary to fail if the filsz + offset taken from the
* header is greater than the actual file pager object's size.
@@ -397,7 +393,6 @@ __elfN(load_section)(struct proc *p, struct vmspace *vmspace,
map_addr, /* virtual start */
map_addr + map_len,/* virtual end */
prot,
- VM_PROT_ALL,
cow);
if (rv != KERN_SUCCESS) {
vm_object_deallocate(object);
@@ -425,7 +420,7 @@ __elfN(load_section)(struct proc *p, struct vmspace *vmspace,
/* This had damn well better be true! */
if (map_len != 0) {
rv = __elfN(map_insert)(&vmspace->vm_map, NULL, 0, map_addr,
- map_addr + map_len, VM_PROT_ALL, VM_PROT_ALL, 0);
+ map_addr + map_len, VM_PROT_ALL, 0);
if (rv != KERN_SUCCESS) {
return (EINVAL);
}
@@ -456,7 +451,7 @@ __elfN(load_section)(struct proc *p, struct vmspace *vmspace,
vm_map_protect(&vmspace->vm_map, trunc_page(map_addr),
round_page(map_addr + map_len), prot, FALSE);
- return (error);
+ return (0);
}
/*
OpenPOWER on IntegriCloud