hrev45392 adds 4 changesets to branch 'master' old head: 18d2a3609e8bb8422b568deb1c481f38d9f90792 new head: b6868c6e7867cd1808633d41f574f1ab42afcd4b overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=b6868c6+%5E18d2a36 ---------------------------------------------------------------------------- 65389e2: nfs4: Fix CID 991755: break the loop after finding required element ce6f81f: nfs4: Fix CID 991503: memory leak in handling callback requests edb1255: nfs4: Fix CID 991494: memory leak if acquiring a lock fails b6868c6: nfs4: Fix CID 991756: do not delete RPC::Request if (re)sending fails [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 5 files changed, 14 insertions(+), 9 deletions(-) src/add-ons/kernel/file_systems/nfs4/Cookie.cpp | 1 + src/add-ons/kernel/file_systems/nfs4/Inode.cpp | 4 +++- src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp | 10 +++++----- src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp | 7 ++++--- src/add-ons/kernel/file_systems/nfs4/Request.cpp | 1 + ############################################################################ Commit: 65389e2f2bc7518f137de212979fa2431fbbc6a9 URL: http://cgit.haiku-os.org/haiku/commit/?id=65389e2 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Tue Mar 19 02:39:53 2013 UTC nfs4: Fix CID 991755: break the loop after finding required element ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/Cookie.cpp b/src/add-ons/kernel/file_systems/nfs4/Cookie.cpp index e756e75..1fbfe5c 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Cookie.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Cookie.cpp @@ -117,6 +117,7 @@ Cookie::UnregisterRequest(RPC::Request* req) else prev->fNext = ent->fNext; delete ent; + break; } prev = ent; ############################################################################ Commit: ce6f81f7b2e2a7ae4d0d7facbb5e69d804b6e356 URL: http://cgit.haiku-os.org/haiku/commit/?id=ce6f81f Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Thu Mar 21 01:46:04 2013 UTC nfs4: Fix CID 991503: memory leak in handling callback requests ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp index c296289..fa371a0 100644 --- a/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/RPCCallbackServer.cpp @@ -307,17 +307,17 @@ CallbackServer::ConnectionThread(ConnectionEntry* entry) } CallbackRequest* request = new CallbackRequest(buffer, size); - if (request == NULL || request->Error() != B_OK) { + if (request == NULL) { free(buffer); - continue; - } else if (request != NULL && request->Error() != B_OK) { + continue; + } else if (request->Error() != B_OK) { reply = CallbackReply::Create(request->XID(), request->RPCError()); if (reply != NULL) { connection->Send(reply->Stream().Buffer(), reply->Stream().Size()); delete reply; } - free(buffer); + delete request; continue; } @@ -335,7 +335,7 @@ CallbackServer::ConnectionThread(ConnectionEntry* entry) } default: - free(buffer); + delete request; } } ############################################################################ Commit: edb1255117f4f49c49281e72eefc0beaa5c28625 URL: http://cgit.haiku-os.org/haiku/commit/?id=edb1255 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Thu Mar 21 01:48:46 2013 UTC nfs4: Fix CID 991494: memory leak if acquiring a lock fails ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp index 037930c..7d82a9c 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Inode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Inode.cpp @@ -755,8 +755,10 @@ Inode::AcquireLock(OpenFileCookie* cookie, const struct flock* lock, linfo->fType = sGetLockType(lock->l_type, wait); result = NFS4Inode::AcquireLock(cookie, linfo, wait); - if (result != B_OK) + if (result != B_OK) { + delete linfo; return result; + } MutexLocker _(state->fLocksLock); state->AddLock(linfo); ############################################################################ Revision: hrev45392 Commit: b6868c6e7867cd1808633d41f574f1ab42afcd4b URL: http://cgit.haiku-os.org/haiku/commit/?id=b6868c6 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Thu Mar 21 02:16:42 2013 UTC nfs4: Fix CID 991756: do not delete RPC::Request if (re)sending fails ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp index 811d3d4..7190fee 100644 --- a/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/RPCServer.cpp @@ -161,7 +161,10 @@ Server::SendCallAsync(Call* call, Reply** reply, Request** request) fRequests.AddRequest(req); *request = req; - return ResendCallAsync(call, req); + status_t error = ResendCallAsync(call, req); + if (error != B_OK) + delete req; + return error; } @@ -173,7 +176,6 @@ Server::ResendCallAsync(Call* call, Request* request) if (fThreadError != B_OK && Repair() != B_OK) { fRequests.FindRequest(request->fXID); - delete request; return fThreadError; } @@ -181,7 +183,6 @@ Server::ResendCallAsync(Call* call, Request* request) status_t result = fConnection->Send(stream.Buffer(), stream.Size()); if (result != B_OK) { fRequests.FindRequest(request->fXID); - delete request; return result; } diff --git a/src/add-ons/kernel/file_systems/nfs4/Request.cpp b/src/add-ons/kernel/file_systems/nfs4/Request.cpp index b8e8f96..96fa49c 100644 --- a/src/add-ons/kernel/file_systems/nfs4/Request.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/Request.cpp @@ -56,6 +56,7 @@ Request::_SendUDP(Cookie* cookie) if (result != B_OK) { if (cookie != NULL) cookie->UnregisterRequest(rpc); + delete rpc; return result; }