diff options
| -rw-r--r-- | sys/i386/ibcs2/imgact_coff.c | 8 |
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; } |
