From 8e7ee8f0d9ded73ce5c885861b437eb301b7059e Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 26 Nov 2013 01:53:13 +0100 Subject: [PATCH] bindfs_lookup(): Don't leak source child vnode reference --- .../kernel/file_systems/bindfs/kernel_interface.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bindfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bindfs/kernel_interface.cpp index 72d642dd29..7b1244c415 100644 --- a/src/add-ons/kernel/file_systems/bindfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bindfs/kernel_interface.cpp @@ -141,7 +141,14 @@ bindfs_lookup(fs_volume* fsVolume, fs_vnode* fsDir, const char* entryName, if (error != B_OK) RETURN_ERROR(error); - return get_vnode(fsVolume, *_vnid, NULL); + error = get_vnode(fsVolume, *_vnid, NULL); + + // lookup() on the source gave us a reference we don't need any longer + vnode* sourceChildVnode; + if (vfs_lookup_vnode(sourceVolume->id, *_vnid, &sourceChildVnode) == B_OK) + vfs_put_vnode(sourceChildVnode); + + return error; }