From 1747c1c1dcd748c98d910b35b5f213916e99a595 Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Mon, 24 Sep 2012 17:35:09 -0700 Subject: [PATCH] rbd: fix leak of dir handle in get_rbd_seq 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 --- src/rbd.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rbd.cc b/src/rbd.cc index f4fade81cc153..5f03e4f0280a2 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -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; } -- 2.39.5