]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: fix lock leak in lazio_*() failure paths
authorSage Weil <sage@inktank.com>
Sat, 17 Nov 2012 01:36:16 +0000 (17:36 -0800)
committerSage Weil <sage@inktank.com>
Sat, 17 Nov 2012 01:36:16 +0000 (17:36 -0800)
CID 743400 (#1 of 1): Missing unlock (LOCK)
At (5): Returning without unlocking "this->client_lock._m".

CID 743399 (#1 of 1): Missing unlock (LOCK)
At (5): Returning without unlocking "this->client_lock._m".

Signed-off-by: Sage Weil <sage@inktank.com>
src/client/Client.cc

index 5e38ef4096624929ad93249e76b792c9151ad8ca..8d4a5ac63d4d061dad78740bed3695024fabce85 100644 (file)
@@ -6017,7 +6017,7 @@ int64_t Client::drop_caches()
 
 int Client::lazyio_propogate(int fd, loff_t offset, size_t count)
 {
-  client_lock.Lock();
+  Mutex::Locker l(client_lock);
   ldout(cct, 3) << "op: client->lazyio_propogate(" << fd
           << ", " << offset << ", " << count << ")" << dendl;
   
@@ -6028,13 +6028,12 @@ int Client::lazyio_propogate(int fd, loff_t offset, size_t count)
   // for now
   _fsync(f, true);
 
-  client_lock.Unlock();
   return 0;
 }
 
 int Client::lazyio_synchronize(int fd, loff_t offset, size_t count)
 {
-  client_lock.Lock();
+  Mutex::Locker l(client_lock);
   ldout(cct, 3) << "op: client->lazyio_synchronize(" << fd
           << ", " << offset << ", " << count << ")" << dendl;
   
@@ -6045,8 +6044,6 @@ int Client::lazyio_synchronize(int fd, loff_t offset, size_t count)
   
   _fsync(f, true);
   _release(in);
-  
-  client_lock.Unlock();
   return 0;
 }