From 372bf7604edd38dbd2722548a261a401b44df9b4 Mon Sep 17 00:00:00 2001 From: Xin LI Date: Thu, 6 Oct 2005 18:58:59 +0000 Subject: MFC (by alc): | Eliminate an unneeded reference on a vm object. If, in fact, the nearby | vm_map_find() fails, then the excess reference causes the vm object to be | leaked. | | Reviewed by: tegge | | Revision Changes Path | 1.83 +0 -2 src/sys/kern/link_elf.c | 1.88 +0 -2 src/sys/kern/link_elf_obj.c Approved by: re (scottl) --- sys/kern/link_elf.c | 2 -- sys/kern/link_elf_obj.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c index 5679cbf2f3fa..db3de5722981 100644 --- a/sys/kern/link_elf.c +++ b/sys/kern/link_elf.c @@ -704,7 +704,6 @@ link_elf_load_file(linker_class_t cls, const char* filename, error = ENOMEM; goto out; } - vm_object_reference(ef->object); ef->address = (caddr_t) vm_map_min(kernel_map); error = vm_map_find(kernel_map, ef->object, 0, (vm_offset_t *) &ef->address, @@ -884,7 +883,6 @@ link_elf_unload_file(linker_file_t file) vm_map_remove(kernel_map, (vm_offset_t) ef->address, (vm_offset_t) ef->address + (ef->object->size << PAGE_SHIFT)); - vm_object_deallocate(ef->object); } #else if (ef->address) diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index ad4ea35831aa..da3ea77124dc 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -640,7 +640,6 @@ link_elf_load_file(linker_class_t cls, const char *filename, error = ENOMEM; goto out; } - vm_object_reference(ef->object); ef->address = (caddr_t) vm_map_min(kernel_map); error = vm_map_find(kernel_map, ef->object, 0, &mapbase, round_page(mapsize), TRUE, VM_PROT_ALL, VM_PROT_ALL, FALSE); @@ -828,7 +827,6 @@ link_elf_unload_file(linker_file_t file) vm_map_remove(kernel_map, (vm_offset_t) ef->address, (vm_offset_t) ef->address + (ef->object->size << PAGE_SHIFT)); - vm_object_deallocate(ef->object); } if (ef->e_shdr) free(ef->e_shdr, M_LINKER); -- cgit v1.2.3