aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2019-10-17 21:25:50 +0000
committerMark Johnston <markj@FreeBSD.org>2019-10-17 21:25:50 +0000
commit092bacb2c4277cb9aae662f82ceeb4fabfdd818a (patch)
tree5a42dc756fc7ca2572c2b49e1f4cf32bd8e2ac4a /sys
parent516dc824d997e0ae537d056a0babf5862cbfdcde (diff)
downloadsrc-092bacb2c4277cb9aae662f82ceeb4fabfdd818a.tar.gz
src-092bacb2c4277cb9aae662f82ceeb4fabfdd818a.zip
Clean up some nits in link_elf_(un)load_file().
- Remove a redundant assignment of ef->address. - Don't return a Mach error number to the caller if vm_map_find() fails. - Use ptoa() and fix style. MFC after: 2 weeks Sponsored by: Netflix
Notes
Notes: svn path=/head/; revision=353699
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/link_elf_obj.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c
index b9df45d28898..8c9503702fa3 100644
--- a/sys/kern/link_elf_obj.c
+++ b/sys/kern/link_elf_obj.c
@@ -779,7 +779,6 @@ link_elf_load_file(linker_class_t cls, const char *filename,
error = ENOMEM;
goto out;
}
- ef->address = (caddr_t) vm_map_min(kernel_map);
/*
* In order to satisfy amd64's architectural requirements on the
@@ -794,9 +793,10 @@ link_elf_load_file(linker_class_t cls, const char *filename,
error = vm_map_find(kernel_map, ef->object, 0, &mapbase,
round_page(mapsize), 0, VMFS_OPTIMAL_SPACE, VM_PROT_ALL,
VM_PROT_ALL, 0);
- if (error) {
+ if (error != KERN_SUCCESS) {
vm_object_deallocate(ef->object);
- ef->object = 0;
+ ef->object = NULL;
+ error = ENOMEM;
goto out;
}
@@ -1084,11 +1084,9 @@ link_elf_unload_file(linker_file_t file)
free(ef->relatab, M_LINKER);
free(ef->progtab, M_LINKER);
- if (ef->object) {
- vm_map_remove(kernel_map, (vm_offset_t) ef->address,
- (vm_offset_t) ef->address +
- (ef->object->size << PAGE_SHIFT));
- }
+ if (ef->object != NULL)
+ vm_map_remove(kernel_map, (vm_offset_t)ef->address,
+ (vm_offset_t)ef->address + ptoa(ef->object->size));
free(ef->e_shdr, M_LINKER);
free(ef->ddbsymtab, M_LINKER);
free(ef->ddbstrtab, M_LINKER);