diff options
author | Boris Popov <bp@FreeBSD.org> | 1999-11-20 03:03:14 +0000 |
---|---|---|
committer | Boris Popov <bp@FreeBSD.org> | 1999-11-20 03:03:14 +0000 |
commit | a3021f91e38efdbbb8ed97f92c3342c93d17e364 (patch) | |
tree | d6b3938333f2d895dc83dedd021afee7b8aed520 /sys/kern/imgact_elf.c | |
parent | f2b766ceb4144b0a499d3da0b328a08c223c3b11 (diff) | |
download | src-a3021f91e38efdbbb8ed97f92c3342c93d17e364.tar.gz src-a3021f91e38efdbbb8ed97f92c3342c93d17e364.zip |
Vnode was left referenced in the case if ELF image is broken.
Reviewed by: Peter Wemm <peter@netplex.com.au>
Notes
Notes:
svn path=/head/; revision=53446
Diffstat (limited to 'sys/kern/imgact_elf.c')
-rw-r--r-- | sys/kern/imgact_elf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c index 8cb6925309ea..84c4ac6e59c3 100644 --- a/sys/kern/imgact_elf.c +++ b/sys/kern/imgact_elf.c @@ -220,8 +220,10 @@ elf_load_section(struct proc *p, struct vmspace *vmspace, struct vnode *vp, vm_o VM_PROT_ALL, MAP_COPY_ON_WRITE | MAP_PREFAULT); vm_map_unlock(&vmspace->vm_map); - if (rv != KERN_SUCCESS) + if (rv != KERN_SUCCESS) { + vm_object_deallocate(object); return EINVAL; + } /* we can stop now if we've covered it all */ if (memsz == filsz) |