From afc21e136779eebee86db8da56464a152b9ea9e0 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Thu, 20 Feb 2014 22:36:01 +0100 Subject: [PATCH] nfs4: Fix gIdMapper resource leak Mounting another nfs4 volume loses reference to the previous idmapper service. Thanks Stephan for pointing this out. --- .../file_systems/nfs4/kernel_interface.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp index a4c689754b..52c943a59f 100644 --- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp @@ -167,15 +167,17 @@ nfs4_mount(fs_volume* volume, const char* device, uint32 flags, /* prepare idmapper server */ MutexLocker locker(gIdMapperLock); - gIdMapper = new(std::nothrow) IdMap; - if (gIdMapper == NULL) - return B_NO_MEMORY; + if (gIdMapper == NULL) { + gIdMapper = new(std::nothrow) IdMap; + if (gIdMapper == NULL) + return B_NO_MEMORY; - result = gIdMapper->InitStatus(); - if (result != B_OK) { - delete gIdMapper; - gIdMapper = NULL; - return result; + result = gIdMapper->InitStatus(); + if (result != B_OK) { + delete gIdMapper; + gIdMapper = NULL; + return result; + } } locker.Unlock();