summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/i386/ibcs2/imgact_coff.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/i386/ibcs2/imgact_coff.c b/sys/i386/ibcs2/imgact_coff.c
index a827deede270..526ff6602e6b 100644
--- a/sys/i386/ibcs2/imgact_coff.c
+++ b/sys/i386/ibcs2/imgact_coff.c
@@ -214,7 +214,7 @@ coff_load_file(struct proc *p, char *name)
0,
(caddr_t) vp,
0)) != 0)
- goto fail;
+ goto unlocked_fail;
fhdr = (struct filehdr *)ptr;
@@ -270,14 +270,16 @@ coff_load_file(struct proc *p, char *name)
error = 0;
- dealloc_and_fail:
+ dealloc_and_fail:
if (vm_map_remove(kernel_map,
(vm_offset_t) ptr,
(vm_offset_t) ptr + PAGE_SIZE))
panic(__FUNCTION__ " vm_map_remove failed");
fail:
- vput(nd.ni_vp);
+ VOP_UNLOCK(vp, 0, p);
+ unlocked_fail:
+ vrele(nd.ni_vp);
zfree(namei_zone, nd.ni_cnd.cn_pnbuf);
return error;
}