summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Pierre André <jpandre@users.sourceforge.net>2012-08-22 10:00:22 +0200
committerJean-Pierre André <jpandre@users.sourceforge.net>2012-08-22 10:00:22 +0200
commit5dc02290e54451bc3935674644a9133539c01053 (patch)
treeb088aba65648d55b224b9a6eed4bbaa9b876ae5a
parent263ae23c5fd69a76e83561e1210e434cc73cb73d (diff)
downloadillumos-fusefs-5dc02290e54451bc3935674644a9133539c01053.tar.gz
Freed the vnode if file creation is rejected (avoiding memory leak)
-rw-r--r--kernel/fuse_vnops.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/fuse_vnops.c b/kernel/fuse_vnops.c
index 237283f..40c5158 100644
--- a/kernel/fuse_vnops.c
+++ b/kernel/fuse_vnops.c
@@ -629,6 +629,10 @@ get_filehandle(struct vnode *vp, int flag, struct cred *credp,
DTRACE_PROBE3(get_filehandle_err_create,
char *, "create_filehandle request failed",
int, err, struct vnode *, vp);
+ /* release the vnode, if creation failed */
+ VFS_RELE(vp->v_vfsp);
+ vp->v_data = NULL;
+ vn_free(vp);
goto out;
} else if (msgp && msgp->opdata.outdata) {
DTRACE_PROBE2(get_filehandle_info_create_ok,