]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: fix leak of dir handle in get_rbd_seq
authorJosh Durgin <josh.durgin@inktank.com>
Tue, 25 Sep 2012 00:35:09 +0000 (17:35 -0700)
committerJosh Durgin <josh.durgin@inktank.com>
Tue, 25 Sep 2012 00:57:33 +0000 (17:57 -0700)
CID 717098: Resource leak (RESOURCE_LEAK)
At (6): Variable "device_dir" going out of scope leaks the storage it
points to.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
src/rbd.cc

index f4fade81cc153142e67bcc8010ed5b880a6e7a3b..5f03e4f0280a20134a0381905e84ba3b60e44a80 100644 (file)
@@ -966,6 +966,7 @@ static int get_rbd_seq(int major_num, string &seq)
   if (!dent) {
     r = -errno;
     cerr << "Error reading " << devices_path << ": " << cpp_strerror(-r) << std::endl;
+    closedir(device_dir);
     return r;
   }
 
@@ -986,11 +987,13 @@ static int get_rbd_seq(int major_num, string &seq)
     int cur_major = atoi(major);
     if (cur_major == major_num) {
       seq = string(dent->d_name);
+      closedir(device_dir);
       return 0;
     }
 
   } while ((dent = readdir(device_dir)));
 
+  closedir(device_dir);
   return -ENOENT;
 }