diff options
author | rwatson <rwatson@FreeBSD.org> | 2002-02-18 00:26:10 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2002-02-18 00:26:10 +0000 |
commit | 43f97fe4ae07b305a42ebbd3f668b9fdeecbaa5f (patch) | |
tree | 227e102ca805695a596a2d163ed6b8306de09c99 /sys/kern | |
parent | 946a79fb745cd5a3328b0dd31cfd59da23d9df43 (diff) | |
download | FreeBSD-src-43f97fe4ae07b305a42ebbd3f668b9fdeecbaa5f.zip FreeBSD-src-43f97fe4ae07b305a42ebbd3f668b9fdeecbaa5f.tar.gz |
When vn_open() is failing because it cannot allocate a vm object, call
VOP_CLOSE() on the vnode, so that VOP_OPEN() and VOP_CLOSE() calls
are symmetric in all failure cases. This prevents an 'open' reference
from being leaked in that unlikely failure scenario.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_vnops.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index e9b3e90..32fe982 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -199,7 +199,7 @@ restart: */ if (vn_canvmio(vp) == TRUE) { if ((error = vfs_object_create(vp, td, cred)) != 0) - /* XXX: Should VOP_CLOSE() again here. */ + VOP_CLOSE(vp, fmode, cred, td); goto bad; } |