]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephfs: avoid map been inserted by mistake
authorXiao Guodong <xiaogd@inspur.com>
Thu, 25 Jul 2019 08:36:05 +0000 (16:36 +0800)
committerXiao Guodong <xiaogd@inspur.com>
Fri, 26 Jul 2019 02:27:54 +0000 (10:27 +0800)
if map client_caps has not key client, client_caps[client] will insert key client with null value into the map.

Fixes: https://tracker.ceph.com/issues/40939
Signed-off-by: XiaoGuoDong2019 <xiaogd@inspur.com>
src/mds/SnapRealm.h

index 62d6cba952a401bd7870c020e1f2c1affe10e1f0..17849e4f926f667c8097321769a5cc2238f6e670 100644 (file)
@@ -147,9 +147,10 @@ public:
   }
   void remove_cap(client_t client, Capability *cap) {
     cap->item_snaprealm_caps.remove_myself();
-    if (client_caps[client]->empty()) {
-      delete client_caps[client];
-      client_caps.erase(client);
+    auto found = client_caps.find(client);
+    if (found != client_caps.end() && found->second->empty()) {
+      delete found->second;
+      client_caps.erase(found);
     }
   }
 };