[haiku-commits] haiku: hrev45392 - src/add-ons/kernel/file_systems/nfs4

  • From: pdziepak@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 21 Mar 2013 03:41:03 +0100 (CET)

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;
                        }
 


Other related posts:

  • » [haiku-commits] haiku: hrev45392 - src/add-ons/kernel/file_systems/nfs4 - pdziepak