diff options
| author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-09-14 18:43:24 +0000 |
|---|---|---|
| committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-09-14 18:43:24 +0000 |
| commit | 52c6716feebe4336fb5f23367bf0da1ef26fb090 (patch) | |
| tree | 8abed9907859cffc566a41a1bbd77b1ed17b10d1 /sys/dev | |
| parent | 31580e6817ead1f0ce9d7186b69b9a06ef75675b (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/md/md.c | 6 |
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); } |
