aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2004-09-14 18:43:24 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2004-09-14 18:43:24 +0000
commit52c6716feebe4336fb5f23367bf0da1ef26fb090 (patch)
tree8abed9907859cffc566a41a1bbd77b1ed17b10d1 /sys/dev
parent31580e6817ead1f0ce9d7186b69b9a06ef75675b (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/md/md.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
index eb435c7a88da1..f9ef42dd74e11 100644
--- a/sys/dev/md/md.c
+++ b/sys/dev/md/md.c
@@ -897,10 +897,10 @@ mdcreate_vnode(struct md_ioctl *mdio, struct thread *td)
flags &= ~FWRITE;
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, mdio->md_file, td);
error = vn_open(&nd, &flags, 0, -1);
- if (error)
- return (error);
}
NDFREE(&nd, NDF_ONLY_PNBUF);
+ if (error)
+ return (error);
if (nd.ni_vp->v_type != VREG ||
(error = VOP_GETATTR(nd.ni_vp, &vattr, td->td_ucred, td))) {
VOP_UNLOCK(nd.ni_vp, 0, td);
@@ -939,11 +939,13 @@ mdcreate_vnode(struct md_ioctl *mdio, struct thread *td)
else
sc->nsect = vattr.va_size / sc->secsize; /* XXX: round up ? */
if (sc->nsect == 0) {
+ (void) vn_close(nd.ni_vp, flags, td->td_ucred, td);
mddestroy(sc, td);
return (EINVAL);
}
error = mdsetcred(sc, td->td_ucred);
if (error) {
+ (void) vn_close(nd.ni_vp, flags, td->td_ucred, td);
mddestroy(sc, td);
return (error);
}