From 52c6716feebe4336fb5f23367bf0da1ef26fb090 Mon Sep 17 00:00:00 2001 From: Pawel Jakub Dawidek Date: Tue, 14 Sep 2004 18:43:24 +0000 Subject: - Don't forget about NDFREE() in case of vn_open() failure. - Don't forget about vn_close() in case of failure. --- sys/dev/md/md.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys/dev') 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); } -- cgit v1.3