]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix iterator mishandling in PGMap::apply_incremental 52555/head
authorChristian Theune <ct@flyingcircus.io>
Thu, 8 Dec 2022 08:41:40 +0000 (09:41 +0100)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Wed, 29 Nov 2023 11:45:32 +0000 (18:45 +0700)
Fixes: https://tracker.ceph.com/issues/58303
Signed-off-by: Oliver Schmidt <os@flyingcircus.io>, Christian Theune <ct@flyingcircus.io>
(cherry picked from commit 6ba497f2e7a68517fc3a47b6cfd79a19724f8d39)

src/mon/PGMap.cc

index 2203176033fca368e104fa5c98063a1d8079da90..4158acc3a6da379b5c7ef6f96e7f9618e45423a9 100644 (file)
@@ -1245,10 +1245,12 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc)
       stat_osd_sub(t->first, t->second);
       osd_stat.erase(t);
     }
-    for (auto i = pool_statfs.begin();  i != pool_statfs.end(); ++i) {
+    for (auto i = pool_statfs.begin();  i != pool_statfs.end();) {
       if (i->first.second == *p) {
        pg_pool_sum[i->first.first].sub(i->second);
-       pool_statfs.erase(i);
+       i = pool_statfs.erase(i);
+      } else {
+        ++i;
       }
     }
   }