]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: fix crash when iterating and deleting sessions 44038/head
authorXiubo Li <xiubli@redhat.com>
Mon, 22 Nov 2021 02:33:00 +0000 (10:33 +0800)
committerXiubo Li <xiubli@redhat.com>
Tue, 23 Nov 2021 04:21:53 +0000 (12:21 +0800)
Introduced-by: 730dd8a87a3dbeba348dd419869ac110c57ed47a
Fixes: https://tracker.ceph.com/issues/53082
Signed-off-by: Xiubo Li <xiubli@redhat.com>
src/client/Client.cc

index 039ede40aeb23c78bfe6f9a595925b94099fe7c2..4e5e4164c3553aff4b7f8af25da7b6cb4129d8bc 100644 (file)
@@ -2866,9 +2866,10 @@ void Client::handle_mds_map(const MConstRef<MMDSMap>& m)
   _mdsmap.swap(mdsmap);
 
   // reset session
-  for (auto &p : mds_sessions) {
-    mds_rank_t mds = p.first;
-    auto session = p.second;
+  for (auto p = mds_sessions.begin(); p != mds_sessions.end(); ) {
+    mds_rank_t mds = p->first;
+    MetaSessionRef session = p->second;
+    ++p;
 
     int oldstate = _mdsmap->get_state(mds);
     int newstate = mdsmap->get_state(mds);