Author: markj
Date: Thu Oct 17 21:25:50 2019
New Revision: 353699
URL: https://svnweb.freebsd.org/changeset/base/353699

Log:
  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

Modified:
  head/sys/kern/link_elf_obj.c

Modified: head/sys/kern/link_elf_obj.c
==============================================================================
--- head/sys/kern/link_elf_obj.c        Thu Oct 17 20:46:33 2019        
(r353698)
+++ head/sys/kern/link_elf_obj.c        Thu Oct 17 21:25:50 2019        
(r353699)
@@ -779,7 +779,6 @@ link_elf_load_file(linker_class_t cls, const char *fil
                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 *fil
        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);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to